Устранение неполадок · по состоянию на 2026-10-13

Claude Code отказывается редактировать файлы GBK

По состоянию на 2026-10-13 инструменты Edit и NotebookEdit в Claude Code записывают файл целиком как UTF-8, и до версии 2.1.296 каждый байт, который не удавалось декодировать, заменялся символом U+FFFD — поэтому текст в файлах GBK, Shift-JIS и Windows-1252 превращался в нечитаемый мусор. Начиная с 2.1.296 (в официальном журнале изменений дата October 9, 2026) такие правки отвергаются с сообщением File is not valid UTF-8, и в файл ничего не записывается. Надёжный порядок такой: определить кодировку общей командой file, сделать резервную копию и перекодировать iconv, и только потом снова редактировать в Claude Code. На страницах settings, troubleshooting, common-workflows, checkpointing, terminal-config и overview, сверенных 2026-10-13, параметра, который задавал бы кодировку файла, нет.

Обновлено 2026-10-14

Закончилась квота подписки или постоянно 429? Можно перейти на API с оплатой по токенам и продолжить работу с одним ключом.

#File is not valid UTF-8#2.1.296#file -i#iconv -f -t

Четыре вещи, которые стоит прояснить

2.1.296

Версия, с которой начался отказ

В официальном журнале изменений эта строка стоит под 2.1.296, дата версии — October 9, 2026; в CHANGELOG.md на GitHub та же фраза слово в слово, но там у заголовков версий дат нет.

U+FFFD

Что записывали старые версии

В официальном справочнике ошибок: Before v2.1.296, Edit and NotebookEdit applied such an edit and saved every byte they couldn't decode as U+FFFD. — и тем, кто ещё на старой версии, предлагают обновить Claude Code.

0 байт

Цена отказа

Официальная формулировка: Claude Code refused the change. Nothing was written, so the file is as it was. При отказе файл не меняется ни на байт.

file -i

Как проверить кодировку

В руководстве file(1) сказано, что -i заставляет выводить строки mime-типов (в примере это text/plain; charset=us-ascii), а --mime-encoding печатает только этот элемент. Это обычные утилиты Unix, а не параметры Claude Code.

Почему файлы портились и почему правки отвергают сейчас

По состоянию на 2026-10-13 документация отвечает на обе части вопроса. Справочник инструментов объясняет причину отказа: The tools refuse because they save the whole file back as UTF-8, which would replace every byte they can't decode with the replacement character U+FFFD. В журнале изменений записано, что до 2.1.296 Edit и NotebookEdit заменяли каждый не-ASCII символ в файлах, которые не являются корректным UTF-8, а справочник ошибок добавляет: Before v2.1.296, Edit and NotebookEdit applied such an edit and saved every byte they couldn't decode as U+FFFD. — то есть одной правки хватало, чтобы текст в GBK превратился в цепочку U+FFFD. Теперь Edit и NotebookEdit отказываются и не трогают файл, а в сообщении об ошибке перечислены три устаревшие кодировки: Windows-1252, Shift-JIS и GBK. Важна и область проверки: в справочнике ошибок сказано, что проверка охватывает байты файла целиком, поэтому тот же текст появляется и в файле, который должен быть UTF-8, если в нём встретилась хотя бы одна некорректная байтовая последовательность.

Фраза из журнала изменений дословно

Запись Claude Code 2.1.296 звучит так: Fixed Edit and NotebookEdit replacing every non-ASCII character in files that are not valid UTF-8 (Windows-1252, Shift-JIS, GBK); such edits are now refused. Она совпадает слово в слово на странице changelog сайта code.claude.com и в CHANGELOG.md на GitHub, и страница сама указывает, что построена из этого файла; дату October 9, 2026 несёт только версия на code.claude.com. Две более ранние записи тоже про кодировки: 2.1.214 (July 18, 2026) исправила то, что > и >> в PowerShell 5.1 писали файлы UTF-16LE, которые другие инструменты не читали как UTF-8; 2.1.267 (September 9, 2026) заставила публикацию артефакта называть строку и столбец, если файл не является корректным UTF-8 или содержит U+FFFD.

Три записи с датами из официальных страниц

2026-07-18

Claude Code 2.1.214: исправлено поведение > и >> в Windows PowerShell 5.1, писавших UTF-16LE-файлы, которые другие инструменты не читали как UTF-8, а также падение скриптов Python с UnicodeDecodeError при чтении не-UTF-8 стандартного ввода. В справочнике инструментов сказано, что это поведение Windows требует v2.1.214 или новее.

2026-09-09

Claude Code 2.1.267: при публикации артефакта из файла, который не является корректным UTF-8 или содержит U+FFFD, ошибка теперь называет строку и столбец. В справочнике ошибок добавлено, что до v2.1.267 Claude Code загружал такой файл без проверки, и публикацию отклонял сервер.

2026-10-09

Claude Code 2.1.296: Edit и NotebookEdit перестают заменять не-ASCII символы в файлах, которые не являются корректным UTF-8 (Windows-1252, Shift-JIS, GBK), и вместо этого отвергают такие правки.

Подтверждено и не подтверждено

Подтверждено (дословно на официальных страницах)

Нижеперечисленное слово в слово приводится на официальных страницах, сверенных 2026-10-13: фраза журнала изменений для 2.1.296 и её дата October 9, 2026; текст справочника инструментов Claude can't use NotebookEdit on a file that isn't valid UTF-8. The same goes for Edit, unless the file starts with a little-endian UTF-16 byte-order mark. — то есть NotebookEdit неприменим к файлам, которые не являются корректным UTF-8, для Edit действует то же правило, и исключение про little-endian UTF-16 BOM отнесено именно к Edit; что при отказе файл остаётся нетронутым и что причина в записи всего файла как UTF-8; текст ошибки из справочника ошибок и два предлагаемых пути (правка shell-командой, которая читает и пишет файл в его собственной кодировке, либо конвертация в UTF-8 с последующим редактированием); то, что до v2.1.296 недекодируемые байты сохранялись как U+FFFD; и то, что Write по-прежнему может заменить такой файл целиком, но сохранит его как UTF-8, так что исходная кодировка теряется. Из документации общих утилит: -i и --mime-encoding в file(1); -f и --from-code, -t и --to-code, -l, -c, //TRANSLIT и //IGNORE в iconv(1); список кодировок GNU libiconv, где есть SHIFT_JIS, GBK и семейство CP1252.

Не подтверждено и не описано

Три вещи не описаны на восьми страницах документации Claude Code, сверенных 2026-10-13 (settings, troubleshooting, common-workflows, checkpointing, terminal-config, overview, errors и tools reference), и не стоит на них рассчитывать. Первое: способ задать кодировку файла там не описан — о декодировании файлов говорят только страницы errors и tools reference, а на остальных шести страницах настроек кодировки нет. Второе: ни на одной из этих страниц нет параметра, который заставил бы Edit писать файл обратно в GBK. Третье: нет средства, которое автоматически вернуло бы текст, уже заменённый на U+FFFD, — в разделе о публикации артефактов справочник ошибок предлагает лишь сохранить файл заново как UTF-8 и подставить вместо U+FFFD те символы, которые потеряли прежняя правка, вставка или конвертация. file(1) сам предупреждает, что часть логики определения кодировок зашита в encoding.c, поэтому его вывод — намёк, а не доказательство.

Два официальных пути и два вида мусора на экране

Оставить кодировку или конвертировать в UTF-8

Справочник ошибок предлагает два пути: чтобы файл остался в своей кодировке, Claude вносит изменение shell-командой, которая читает и пишет файл в этой кодировке; чтобы продолжать работать с Edit, сконвертируйте файл в UTF-8 или исправьте некорректные байты в файле, который должен быть UTF-8, и попросите Claude отредактировать снова. Edit и NotebookEdit возвращаются только во втором случае; для первого пути справочник описывает способ, но не называет команды, а общий способ — форма вроде iconv -f GBK -t UTF-8.

Испорченный файл или испорченный вывод терминала

Страница troubleshooting относит квадратики, размытые глифы и неверные символы во встроенных терминалах VS Code, Cursor и Devin Desktop на счёт GPU-рендерера и советует выполнить /terminal-setup, чтобы установить terminal.integrated.gpuAcceleration в off, либо изменить это в настройках редактора и перезагрузить окно; байты файла при этом не меняются. О настоящей проблеме с кодировкой говорит сообщение File is not valid UTF-8, а с 2.1.296 файл не меняется вовсе. Если в тексте уже встречаются U+FFFD, это символ, который записывали версии старше 2.1.296.

Разбирайте в этом порядке

① Сначала определите кодировку общими средствами. file(1) документирует -i (строки mime-типов; в примере — text/plain; charset=us-ascii) и --mime-encoding, который печатает только этот элемент, а iconv -l перечисляет известные системе имена кодировок; это утилиты Unix, а не опции Claude Code. ② Резервная копия и конвертация. Сначала скопируйте оригинал, затем запустите iconv, указав обе стороны: в руководстве это iconv [ options ] [ -f from-encoding ] [ -t to-encoding ], а пример — iconv -f ISO-8859-15 -t UTF-8 < input.txt > output.txt. Там же сказано, что неконвертируемые символы по умолчанию прерывают работу, -c отбрасывает их, //TRANSLIT подбирает похожие и ставит вопросительный знак, когда не может, а //IGNORE отбрасывает с ошибкой после конвертации; все эти варианты теряют символы, поэтому проверьте результат и храните копию. ③ Затем возвращайтесь к Claude Code. Обновите Claude Code до 2.1.296 или новее (для старых версий в документации одно указание: update Claude Code). Если файл должен остаться в своей кодировке, следуйте официальной подсказке и правьте shell-командой, которая читает и пишет эту кодировку; после конвертации в UTF-8 Edit снова работает, а полная замена через Write сохранит файл как UTF-8 и исходную кодировку потеряет.

На QCode

Проверку кодировки выполняет сам Claude Code на вашей машине, поэтому она не зависит от выбранного эндпоинта. Подключение — двумя переменными: ANTHROPIC_BASE_URL — https://api.qcode.cc/api, ANTHROPIC_AUTH_TOKEN — ваш ключ вида cr_ из консоли; в статье на сайте qcode.cc о настройке ANTHROPIC_BASE_URL добавлено, что завершающий слэш не нужен и что модели Claude работают только через эндпоинт Anthropic. По состоянию на 2026-10-13 claude-sonnet-5-5, claude-haiku-4-5-20251001 и claude-opus-5-5 доступны в QCode. Оплата по токенам; цены каждой модели — на /models.

Частые вопросы

Почему Claude Code испортил мой GBK-файл и почему теперь отказывает в правке?

Потому что Edit и NotebookEdit сохраняют файл целиком как UTF-8. В справочнике инструментов причина отказа описана так: The tools refuse because they save the whole file back as UTF-8, which would replace every byte they can't decode with the replacement character U+FFFD. До 2.1.296 такая замена и происходила, поэтому одна правка покрывала китайский или японский текст символами замены. С 2.1.296 эти правки отвергаются: Fixed Edit and NotebookEdit replacing every non-ASCII character in files that are not valid UTF-8 (Windows-1252, Shift-JIS, GBK); such edits are now refused — и справочник ошибок добавляет: Nothing was written, so the file is as it was. Как именно это выглядит на экране, решает редактор; в документации назван символ U+FFFD.

Как узнать, какая у файла на самом деле кодировка?

Сначала команда file. В file(1) сказано, что -i заставляет выводить строки mime-типов вместо привычного читаемого текста (пример — text/plain; charset=us-ascii), а --mime-type и --mime-encoding печатают только названный элемент. Относитесь к результату как к подсказке: file определяет текстовые типы по диапазонам и последовательностям байтов, и в руководстве отмечено, что часть логики зашита в encoding.c, — проверьте конвертацией iconv и чтением текста. На страницах settings, troubleshooting, common-workflows, checkpointing, terminal-config и overview, сверенных 2026-10-13, команда Claude Code для вывода или задания кодировки файла не описана.

Как конвертировать в UTF-8 и нужна ли резервная копия?

Копия первой, конвертация второй, сверка третьей. Синтаксис из iconv(1): iconv [ options ] [ -f from-encoding ] [ -t to-encoding ], где -f задаёт входную кодировку, а -t выходную; пример из руководства — iconv -f ISO-8859-15 -t UTF-8 < input.txt > output.txt, для GBK-файла будет -f GBK. Помня о предупреждениях руководства: по умолчанию неконвертируемый символ прерывает выполнение, -c отбрасывает его, //TRANSLIT заменяет похожим, а при неудаче печатает вопросительный знак, //IGNORE отбрасывает с сообщением об ошибке. Все эти варианты теряют символы, поэтому сверяйте результат с копией. Так работают утилиты Unix, а не Claude Code.

Так же себя ведут японская Shift-JIS и западная Windows-1252?

Правило одно. В записи 2.1.296 три кодировки названы вместе — Windows-1252, Shift-JIS и GBK; справочник ошибок перечисляет те же три, а справочник инструментов приводит Windows-1252 и Shift-JIS как примеры. Проверка смотрит, декодируются ли байты файла целиком как UTF-8, поэтому и файл, который должен быть UTF-8, получает то же сообщение, если содержит хотя бы одну некорректную последовательность. Имена для конвертации берите из списка GNU libiconv: там есть SHIFT_JIS, CP932, GBK, CP936, GB18030, BIG5 и семейство CP1250–CP1257, а цель — UTF-8.

Как подключить Claude Code через QCode и где смотреть цены?

Две переменные. В руководстве Claude Code для QCode приведены export ANTHROPIC_BASE_URL = https://api.qcode.cc/api и export ANTHROPIC_AUTH_TOKEN = cr_ с вашим ключом, и в таблице эндпоинтов для Claude Code указано то же значение https://api.qcode.cc/api; в статье на сайте qcode.cc о настройке ANTHROPIC_BASE_URL добавлено, что завершающий слэш не нужен и что модели Claude идут только через эндпоинт Anthropic. По состоянию на 2026-10-13 claude-sonnet-5-5, claude-haiku-4-5-20251001 и claude-opus-5-5 доступны в QCode. Оплата по токенам; цены каждой модели — на /models.

Как оплатить и начать из Китая или без зарубежной карты?

Достаточно Alipay или WeChat Pay — зарубежная кредитная карта не требуется. На странице способов оплаты QCode перечислены на экране пополнения Alipay, WeChat Pay, Credit / Debit Card (Visa / Mastercard / AMEX), Apple Pay / Google Pay и Cryptocurrency (много монет и сетей, зачисление после ручной сверки транзакции). QCode работает по предоплате: сначала пополнение, затем пакет, который расходуется из баланса. Там же указаны напечатанные лимиты: пополнение в юанях — от ¥100, в долларах — от $1 до $2,000. После регистрации создайте в консоли ключ вида cr_ и подключите Claude Code.

Источники

Журнал изменений Claude Code (страница changelog на code.claude.com и CHANGELOG.md на GitHub) и официальные страницы документации: Error reference, Tools reference, Troubleshooting, Settings, Terminal configuration, Overview, Common workflows, Checkpointing — всё сверено 2026-10-13. По общим утилитам: руководства file(1) и iconv(1) на man7.org и документация GNU libiconv, тоже от 2026-10-13. По QCode: страницы docs.qcode.cc об эндпоинтах и путях API, полное руководство Claude Code и способы оплаты, а также три статьи на сайте — про использование Claude Code в Китае, установку одной командой и настройку ANTHROPIC_BASE_URL, все сверены 2026-10-13.

Один ключ cr_ — и Claude Code подключён

Задайте ANTHROPIC_BASE_URL=https://api.qcode.cc/api и ANTHROPIC_AUTH_TOKEN по документации QCode, работайте с claude-sonnet-5-5 и другими моделями Claude; оплата по токенам, цены каждой модели — на /models.

Читайте также

Цитаты и шаги на этой странице сверены 2026-10-13 с журналом изменений и документацией Claude Code, руководствами file(1) и iconv(1), документацией GNU libiconv и документацией QCode; официальные страницы меняются без предупреждения, ориентируйтесь на них. file и iconv — общие утилиты Unix: страница приводит их задокументированное поведение, а не параметры Claude Code. Доступность моделей определяется тем, что показано на /models.

Сначала попробуйте, потом решайте

Не уверены, какой тариф выбрать? Начните со «Стартового» ($8.57/мес), а при апгрейде остаток старого тарифа вернётся на баланс.