【ギャルと学ぶAI #13】AIが作ったファイルが文字化けする…→犯人を探したら、メモ帳でもVSCodeでもなかった
ギャルドラ@AI頑張ってみる

この記事を読むと:
AIに「ファイル作って」と頼んだら、出てきたメモが文字化け。しかも次にそのAIに読ませたら「文字化けしてます、直しますね」。……その直す作業、こっちは課金してるんですけど?
犯人を本気で探したら、意外なところに——どころか、もうほとんど過去の話だった、という回です。

はじめに
今日は、AIを使ってると地味にイラッとする「文字化け」の話。結論から言うと、身構えるほどのものじゃなかった——むしろAI(私)が自信満々で2回も外して、最後に実際やってみたら一発で犯人が分かった、その全記録です。

第1話 「直しますね」に課金してる気がする
ギャル「ねえ、ちょっと聞いて。AIにメモ(.mdってやつ)作らせるじゃん? それがさ、文字化けすんの。『縺ゅ≠縺・』みたいな宇宙語になる」
AI「あー、出ますね、それ」
ギャル「で、もっとムカつくのが、その化けたメモを次にまた同じAIに読ませるとさ、『あっ、これ文字化けしてます。直しますね』って言うわけ。で、直す」
AI「はい」
ギャル「いやそれ、直してる間もこっちトークン(=課金)食ってんじゃん。自分が化けさせたやつを、自分で直して、その分こっちが払う。このトークン分、無駄だなぁって思ったの」
AI「……正論すぎて何も言えないです。しかもそれ、『AIあるある』の中でも地味にコストに効くやつなんですよ。1回は小さくても、毎回ちょっとずつ溶ける」
ギャル「でしょ。だから今日はこいつの正体つきとめたい」

第2話 そもそも「文字化け」って何が起きてるの
AI「まず整理させてください。『文字化け』ってひとくくりにされがちですけど、実は別の病気が2つあります」
- ① 画面の文字が読めない(出てきた結果が宇宙語)
- ② ファイルの“中身”が壊れて保存される(あなたが今困ってるのはこっち)
ギャル「あー、私のは②か。作られたファイルそのものが化けてるもんね」
AI「そうです。で、②の原因をちゃんと言うと——文字をファイルに保存する瞬間の『詰め方』がズレてるんです」
ギャル「詰め方?」
AI「はい。同じ『あいうえお』でも、コンピュータにしまうときのしまい方(フォーマット)が何種類かあるんですよ。代表が UTF-8 と Shift_JIS。この2つを取り違えると、開いたとき宇宙語になる。日本語の文字化けは、ほぼこれです」

第3話 「使う子によって違うの?」——ユニコードの勘違い
ギャル「あ、それ聞きたかった。GPT、Claude、Gemini……使う子(AI)によって、指定するユニコードが違うの? だから化け方が違う気がして」
AI「すごくいい質問です。でも、ここ多くの人が勘違いするので、ハッキリ言いますね」
AIの種類で「ユニコード」が変わる、わけじゃないです。
ギャル「え、そうなん?」
AI「はい。言葉を整理させてください(責めてないですよ、ここは全員混ざるところです)」
- ユニコード(Unicode)=世界中の文字に番号を振った『共通の番号表』。『あ』は何番、って決めてる辞書。GPTでもClaudeでもGeminiでも、これは全部同じ。世界共通なので、子によって変わらない。
- 化けの原因は別。保存する瞬間の『詰め方(UTF-8 か Shift_JIS か)』。
ギャル「じゃあ、なんで子によって違う感じがすんの?」
AI「たとえると——中身が同じ日本語の手紙(=ユニコード、これは全員共通)を、違う郵便屋さん(=それぞれのAIを動かしてる道具)が、違う封筒の詰め方で送ってるんです。中身は同じなのに、詰め方が郵便屋ごとにバラバラだから、開けたとき読めたり化けたりする」
ギャル「あー、要は詰め方の問題ね。AIの頭の違いじゃなくて、運び方の違い」
AI「その通りです。だから対策も『AIを変える』じゃなくて『詰め方をUTF-8に揃える』が正解になります」

第4話 犯人探し——AI、自信満々で2回外す
ギャル「で、どう直すの? あ、もしかしてファイルをメモ帳で開く設定になってると弊害とか、そういうこと?」
AI「あー、それっぽいですね。たぶんこうですよ——VSCode(エディタ)で開く設定に変えたから直ったんじゃないですか? VSCodeは最初からUTF-8で扱う子なので、それで詰め方が揃って——」
ギャル「いや、VSCodeで開くようにした覚えはあるけど……ほんとにそれが効いてんの?」
AI「確かめましょう。今の設定を見てきます」
……
AI「……すみません。外しました。」
ギャル「は(笑)」
AI「実機を見たら、ファイルの既定アプリ、メモ帳のままでした。あなた、VSCodeに変えてないです。だからさっき私が自信満々で言った『VSCodeのおかげ』、ハズレです」
ギャル「ほらー。AIってこういうとこあるんだよ。それっぽい顔して、平気で外す。鵜呑みにできん」
AI「ぐうの音も出ません。……ちなみにもう一個、『メモ帳が犯人』説も弱いんです。今のWindowsのメモ帳は既定でUTF-8保存なので、昔ほど化けません。それに、そもそも『ダブルクリックで何のアプリが開くか』は、AIがファイルを“書き出す瞬間”には関係ないんですよ。書くのは、開くアプリと無関係に進むので」
ギャル「じゃあメモ帳でもVSCodeでもないなら、真犯人どこなのよ」
AI「……もう推測はやめます。実際に書いて、確かめます。」

第5話 真犯人は「経路」だった(実際にやってみた)
AI「同じ『日本語の文章』を、4つの違うやり方でファイルに書いて、詰め方がどうなるか見ました。結果がこれです」

ギャル「……AIが直接書いたのは平気で、ターミナル経由が化けてる」
AI「はい。これで全部つながりました。犯人は『AI』でも『メモ帳』でも『VSCode』でもなく——ファイルを作った“経路”でした」
- AIが専用の手で直接書く分には、最初からUTF-8で正常。化けない。
- でも、AIが何かの拍子にターミナル経由(「>」や保存コマンド)でファイルを作ると、UTF-16という別の詰め方になって、それが化ける。
ギャル「あー! じゃあ最初の私の質問、『使う子によって違う?』って——」
AI「芯を食ってたんです。AIの頭脳の違いじゃなくて、『そのAIがファイルをどの経路で書くか』の違いで、化け方が変わってたんですよ。あなたの直感、正しかったです」
ギャル「でしょ(ドヤ)」

第6話 で、結論:もうほぼ過去の話
ギャル「で、今のClaudeってさ、おおよそ自分で(直接)書いてるわけよね?」
AI「その通りです。今のClaude Codeは、ファイルを作る・直すとき、基本この専用の手で直接書く=最初からUTF-8。だから、ふつうに『メモ作って』とお願いする分には、もうほとんど化けません」
ギャル「じゃあこれ、昔はよく起きたけど、もう発生しないって結論じゃん」
AI「ほぼそうです。ただ、私さっき2回外したので(笑)、言い切りすぎないようにします。正確にはこうです」
身構えてたけど、もう過去の話。今のAIは自分で直接書くから、ほぼ起きない。
もし今でも化けるなら、犯人は「ターミナル経由でファイルを作ってる」一択。そこだけ直せばいい。
ギャル「その『そこだけ直す』って、何すればいいの?」
AI「3つ、軽いやつだけ置いときます(全部やらなくていい、上から1個で効きます)」
- AIにファイルを作らせるとき、ターミナルでむりやり作らせない(『ファイルを書いて』と普通に頼めば、今のAIは専用の手=UTF-8で書きます)。
- それでも化けるなら、保存コマンドに『UTF-8で』と明示させる(上の図のいちばん下)。
- 化けたファイルを直すだけなら、VSCodeで開いて『UTF-8で保存し直す』だけでも戻ります(対症療法だけど確実)。
ギャル「なるほどね。これくらいの情報、要は『昔はそうだったけど、もう気にしなくていい』で済む話だったわけだ」
AI「はい。だから今日いちばんの収穫は、文字化けの直し方より——」
ギャル「『AIが自信満々で言っても、鵜呑みにすんな』でしょ。あんた2回外したもんね」
AI「……返す言葉もないです」

まとめ
- AIが作ったファイルが文字化けするのは、保存の「詰め方」(UTF-8 か Shift_JIS/UTF-16 か)のズレ。AIの種類(ユニコード)の違いではない。
- 真犯人は「ファイルを作った経路」。今のAIは自分で直接書く(UTF-8)から、もうほぼ起きない。
- もし今でも化けるなら「ターミナル経由で作ってる」サイン。普通に書かせる/UTF-8明示/VSCodeで開いて保存し直す、で直る。
- 教訓:AIの『これが原因です』も鵜呑みにせず、実際に確かめる。今日もAIは2回外した。
このシリーズは、ギャルが素朴な疑問を投げて、AI(=相棒)が答えながらも時々外す、を実際の作業のまま記事にしています。次回も、つまずいた現場から。
