Claude Code が GBK ファイルの編集を拒否する理由
2026-10-13 時点で、Claude Code の Edit と NotebookEdit はファイル全体を UTF-8 で書き戻すため、2.1.296 より前は解釈できないバイトがすべて代替文字 U+FFFD に置き換えられていました。GBK・Shift-JIS・Windows-1252 で保存した中国語や日本語の本文が文字化けするのはこれが理由です。2.1.296(公式 changelog の日付は October 9, 2026)からは同種の編集はエラー File is not valid UTF-8 で拒否され、1 バイトも書き込まれません。安全な順序は、まず汎用コマンドの file で文字コードを確認し、バックアップを取ってから iconv で UTF-8 に変換し、それから Claude Code に編集させることです。2026-10-13 に確認した settings、troubleshooting、common-workflows、checkpointing、terminal-config、overview の各ページには、ファイルの文字コードを選ぶ設定は書かれていません。
更新日 2026-10-14
サブスクの利用枠切れや 429 が続くときは、トークン従量課金の API に切り替えて、1 つのキーで作業を続けられます。
- トークン従量課金・最新単価は /models
- カード(Visa / Mastercard / AMEX)・Apple Pay・Google Pay・暗号資産で支払い可能
- チャージ後すぐにセルフサービスで開通
まず押さえる四点
拒否を始めた版
公式 changelog ではこの一文は 2.1.296 の項目にあり、版の日付は October 9, 2026 と記されています。GitHub の CHANGELOG.md にも同じ文が一字一句変わりませんが、こちらの版見出しには日付がありません。
以前の版が書き込んだ文字
公式エラー解説の原文は Before v2.1.296, Edit and NotebookEdit applied such an edit and saved every byte they couldn't decode as U+FFFD. で、古い版では Claude Code を更新するよう案内しています。
拒否されたときの実害
公式の記述は Claude Code refused the change. Nothing was written, so the file is as it was. です。拒否された場合はファイルのバイト列は一切変わりません。
文字コードを見る汎用コマンド
file(1) のマニュアルは、-i が MIME 形式の文字列を出すこと(例は text/plain; charset=us-ascii)、--mime-encoding がその要素だけを出すことを明記しています。これは Unix ツールの話で、Claude Code の引数ではありません。
なぜ壊れたのか、なぜ今は拒否するのか
2026-10-13 時点の公式ドキュメントは両方に答えています。Tools reference は拒否の理由を 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. と説明しています。公式 changelog は、2.1.296 より前は Edit と NotebookEdit が UTF-8 でないファイル中の非 ASCII 文字をすべて置き換えていたと記し、Error reference は解釈できないバイトを U+FFFD として保存していたと補っています。そのため 1 回の編集だけで、GBK で保存した本文は U+FFFD の並びになっていました。現在は Edit と NotebookEdit が変更を拒否し、ファイルには触れず、エラー文は Windows-1252、Shift-JIS、GBK の三つの古い文字コードを名指ししています。もう一点、Error reference は判定がファイル全体のバイト列に対して行われると明記しており、UTF-8 であるべきファイルに不正なバイト列が 1 つでもあると同じメッセージが出ます。
公式 changelog の原文
Claude Code の changelog 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。この文は code.claude.com の changelog ページと GitHub の CHANGELOG.md で一字一句同じで、ページ自身も CHANGELOG.md から生成されていると書いています。日付 October 9, 2026 は code.claude.com 側にだけあります。文字コードに関係する変更は他にもあります。2.1.214(July 18, 2026)は Windows PowerShell 5.1 で > と >> が他のツールから UTF-8 として読めない UTF-16LE ファイルを書く問題と、Python スクリプトが UTF-8 でない標準入力を読んで UnicodeDecodeError で落ちる問題を直しました。2.1.267(September 9, 2026)は、UTF-8 として有効でない、または U+FFFD を含むファイルからの artifact 公開で、直す行と列を示すエラーに変更しました。
公式ページから引く三点
Claude Code 2.1.214:Windows PowerShell 5.1 で > と >> が他のツールから UTF-8 として読めない UTF-16LE ファイルを書く問題、および Python スクリプトが UTF-8 でない標準入力を読んで UnicodeDecodeError でクラッシュする問題を修正。公式ドキュメントは Windows のこれらの挙動に v2.1.214 以降が必要と明記しています。
Claude Code 2.1.267:artifact 公開で、ページファイルが UTF-8 として有効でない、または代替文字 U+FFFD を含む場合のエラーが、直す行と列を示すようになりました。エラー解説ページは、2.1.267 より前は Claude Code が確認せずにアップロードし、サーバー側が公開を断っていたとも記しています。
Claude Code 2.1.296:Edit と NotebookEdit が UTF-8 として有効でないファイル(Windows-1252、Shift-JIS、GBK)で非 ASCII 文字を置き換えるのをやめ、そのような編集を拒否するように変更されました。
確認済み vs 確認できない点
確認済み(公式ページに原文あり)
次はいずれも、2026-10-13 に確認した公式ページの原文に根拠があります。2.1.296 の該当文と版の日付 October 9, 2026。Tools reference の Non-UTF-8 files の節は 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 バイト順マークで始まる場合という例外は Edit の側にだけ書かれています。同節はまた、拒否時はファイルに手を付けないこと、理由は全体を UTF-8 で書き戻すため解釈できないバイトが U+FFFD になることも書いています。Error reference のエラー原文と二つの対処(その文字コードのまま読み書きする shell コマンドで変更する、または UTF-8 に変換してから編集し直す)。2.1.296 より前は解釈できないバイトを U+FFFD として保存していたこと。Write はそういうファイルを丸ごと置き換えられるが、その場合は UTF-8 で保存され元の文字コードは失われること。汎用ツールの側は file(1) の -i と --mime-encoding、iconv(1) の -f と --from-code、-t と --to-code、-l、-c、//TRANSLIT、//IGNORE、GNU libiconv の符号一覧に SHIFT_JIS、GBK、CP1252 が含まれることです。
未確認と公式が書いていない点
2026-10-13 に確認した公式ドキュメントの 8 ページ(settings、troubleshooting、common-workflows、checkpointing、terminal-config、overview、errors、tools reference)には、次の三点が書かれていません。① ファイルの文字コードを指定する方法。ファイルのデコードに触れているのは errors と tools reference の 2 ページだけで、残りの 6 ページに文字コードを選ぶ設定はありません。② Edit に GBK で書き戻させる設定や引数も、これらのページにはありません。③ U+FFFD に置き換わった本文を自動的に戻す道具も案内していません。Error reference が artifact 公開の節で示すのは、UTF-8 で保存し直し、以前の編集・貼り付け・変換で失われた文字を埋め戻す、という手順だけです。なお file(1) は Some of the encoding logic is hard-coded in encoding.c と明記しており、出るのは推定にすぎません。
公式の二つの道、二種類の文字化け
元の文字コードを保つ vs UTF-8 に変換する
Error reference は次の二つを示しています。ファイルを現在の文字コードのままにしたいなら、その文字コードで読み書きする shell コマンドで変更させます。Edit ツールを使い続けたいなら、UTF-8 に変換するか、UTF-8 であるべきファイルの不正なバイトを直してから、Claude に改めて編集させます。両者の違いは、Edit と NotebookEdit が再び使えるようになるのは後者だけという点です。前者について Error reference は手順を示すだけでコマンド名は挙げておらず、汎用的なやり方は iconv -f GBK -t UTF-8 のような指定です。
ファイルが壊れた vs 表示だけが壊れた
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 で種類を見ます。file(1) は -i が MIME 形式の文字列を出し(マニュアルの例は text/plain; charset=us-ascii)、--mime-encoding がその要素だけを出すことを説明しています。iconv -l は使える符号名の一覧を出します。これらは Unix ツールの使い方であり、Claude Code の引数ではありません。② バックアップしてから変換します。まず原本をコピーし、iconv で -f に入力、-t に出力の符号を指定します。マニュアルの書式は 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_ で始まる鍵を入れます。サイト内の 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 で書き戻すからです。Tools reference は拒否の理由を 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 より前はこの置換が行われていました。そのため GBK や Shift-JIS のファイルを一度編集するたびに本文が壊れていました。現在は同じ編集が拒否されます。changelog の原文は 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 で、Error reference は 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 はそれぞれの要素だけを出します。ただし結果は推定として扱ってください。マニュアルはテキストの種別をバイト範囲と続きで判別すると述べ、判定ロジックの一部が encoding.c にハードコードされているとも書いています。確実にするには iconv で変換して本文を見比べてください。2026-10-13 に確認した settings、troubleshooting、common-workflows、checkpointing、terminal-config、overview の各ページには、ファイルの文字コードを表示したり指定したりするコマンドは書かれていません。
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 は破棄して変換後にエラーを出す、と明記しています。どれも文字を失うので、コピーと見比べてから Claude Code に編集させてください。これらは Unix ツールの標準的な使い方であり、Claude Code の引数ではありません。
日本語の Shift-JIS や西文の Windows-1252 も同じですか?
同じ規則です。changelog の一文は Windows-1252、Shift-JIS、GBK を並べて書き、Error reference も同じ三つを名指しし、Tools reference は例として Windows-1252 と Shift-JIS を挙げています。判定はファイル全体のバイト列が UTF-8 として通るかどうかで、UTF-8 であるべきファイルに不正なバイトが一つでもあると同じメッセージが出ます。変換では GNU libiconv の符号一覧に SHIFT_JIS、CP932、GBK、CP936、GB18030、BIG5、CP1250 から CP1257 の一族が入っており、その名前を -f に渡します。目標の UTF-8 も同じ一覧にあります。
QCode では Claude Code をどう接続し、単価はどこで見ますか?
二つの環境変数です。QCode の Claude Code チュートリアルは export ANTHROPIC_BASE_URL = https://api.qcode.cc/api と、export ANTHROPIC_AUTH_TOKEN = cr_ の形に鍵を入れる例を示し、エンドポイント一覧の表も Claude Code に同じ https://api.qcode.cc/api を当てています。サイト内の 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 のページと GitHub の CHANGELOG.md)と、公式ドキュメントの Error reference、Tools reference、Troubleshooting、Settings、Terminal configuration、Overview、Common workflows、Checkpointing の各ページで、いずれも 2026-10-13 に確認しました。汎用ツール側は man7.org の file(1) と iconv(1) のマニュアルページ、GNU libiconv のドキュメントです。QCode 側は docs.qcode.cc のエンドポイントと API パス、Claude Code チュートリアル、支払い方法の三ページと、サイト内の中国での利用、ワンクリック導入、ANTHROPIC_BASE_URL 設定の三ページで、こちらも 2026-10-13 に確認しています。
関連記事
中国で Claude Code 利用 2026|Alipay・WeChat
中国から Claude Code を使う手順と、Alipay・WeChat Pay でのチャージ。
Claude Code インストール 2026:Windows・Mac
公式のインストールコマンドとワンクリック導入の二通り。
ANTHROPIC_BASE_URL 設定 2026:変数は 2 つ
自分のエンドポイントへ向ける二つの変数の役割と書き方。
本ページの引用と手順は 2026-10-13 に Claude Code の公式 changelog とドキュメント、file(1) と iconv(1) のマニュアルページ、GNU libiconv のドキュメント、QCode のドキュメントと照合しました。公式ページは予告なく変わるため、公式ページを優先してください。file と iconv は汎用の Unix ツールで、本ページに書いてあるのは両者のドキュメント化された使い方であり、Claude Code の引数ではありません。モデルの提供状況は /models を優先します。