Skip to content

エンコード変換・文字化け修復ツール

文字化けしたテキストを貼り付けるだけで元の文字列を復元します。UTF-8、GBK、Big5、Shift_JIS、EUC-KR、Windows-1252 の組み合わせを総当たりで試し、往復検証を通ったチェーンを上位に並べて表示。各エンコードでのバイト対照と hex からの逆変換も可能です。無料・ブラウザ内処理で、貼り付けた内容は送信されません。

トラッキングなし ブラウザで動作 無料
デコードはすべてブラウザ内で行われます——貼り付けた内容がこの端末を離れることはありません。

文字化けを復元する

文字化けしたテキストを貼り付けてください。考えられるエンコードチェーンをすべて試して結果を並べ替えます——どのエンコードで壊れたのかを知っている必要はありません。

試してみる

原文として最も可能性が高いもの

候補 4 件
  1. 测试

    完全一致

    UTF-8 → GBK

  2. 娴嬭瘯

    完全一致

    Windows-1252 / Latin-1 → UTF-8

  3. 测试

    完全一致

    Windows-1252 / Latin-1 → GBK

  4. 测试

    完全一致

    Windows-1251 → GBK

エンコード変換とバイト検査

同じテキストが主要なエンコードすべてでどんなバイト列になるかを一度に確認できます——データベースやプロトコルに実際に何が入るのかを正確に知りたいときに便利です。

エンコード バイト数 16 進数
UTF-8 6 E4 B8 AD E6 96 87
GBK 4 D6 D0 CE C4
GB18030 4 D6 D0 CE C4
Big5 4 A4 A4 A4 E5
Shift_JIS 4 92 86 95 B6
EUC-KR 4 F1 E9 D9 FE

本ページに表示されるエンコードチェーンはすべて、ページが実行しているものと同じエンジンが生成しています。完全一致バッジの裏側にある往復検証は、既知のバイト列に対してユニットテストでアサートされています。 — Go Tools Team · Sep 8, 2026

Go Tools エンジニアリングチームが構築・検証しました。

早わかり

测试 が 娴嬭瘯 になるのは、どのエンコードのせいですか?

UTF-8 → GBK UTF-8 のバイト列を GBK として読んだからです。6 つの UTF-8 バイト(E6 B5 8B E8 AF 95)が、3 つの GBK 文字に区切り直されます。

测试 が 测试 になるのは?

UTF-8 → Windows-1252 同じ UTF-8 のバイト列を Windows-1252 として読んだ場合です。単バイトエンコードなので、6 バイトがそれぞれ 1 文字になります。

� を含むテキストは復元できますか?

復元不可 できません。そのバイトはデコードの時点で捨てられています。周囲のテキストから復元できる分を拾い、残りは元データまで戻って取り直してください。

漢字 1 文字は何バイトですか?

3 対 2 バイト UTF-8 で 3 バイト、GBK と Big5 では 2 バイト。カラム長を文字数ではなくバイト数で決めたときに、切り詰めが起きる典型的な原因です。

文字化けとは

文字化けとは、あるエンコードで書かれたテキストを別のエンコードで読み込んだ結果です。バイト列そのものは無傷で、間違っているのは解釈だけ。この区別こそが、復元が可能である理由のすべてです。どのエンコードがバイトを書き、どのエンコードがそれを誤読したのかを突き止められれば、その間違いを逆向きに実行して原文を取り戻せます。

「文字化け」は日本語がそのまま国際的な用語になったもので、英語圏でも mojibake と呼ばれます。Unicode が普及するはるか前から、日本語の計算機環境ではこの問題が慢性的だったからです。日本語・中国語・韓国語のテキストがラテン文字より圧倒的に被害を受けやすいのには、構造的な理由があります。これらの言語は多バイトエンコードを必要とし、多バイトエンコード同士は「バイトをどう区切るか」で食い違うからです。ラテン文字の文字列はたいてい素の ASCII に収まり、ASCII についてはどのエンコードも一致しています。

復元が失敗するのは 1 つの状況だけです。デコーダが自分のエンコードで意味を持たないバイトに出会うと、それを保持せず U+FFFD に置き換えて捨ててしまいます。その文字は永久に失われます。それ以外はすべて可逆です。

// The mistake, in three lines of JavaScript
const bytes = new TextEncoder().encode('测试');   // UTF-8: E6 B5 8B E8 AF 95
new TextDecoder('gbk').decode(bytes);            // '娴嬭瘯'  ← mojibake
new TextDecoder('windows-1252').decode(bytes);   // '测试'  ← same bytes, other mistake

このツールでできること

エンコードを知らなくても使える

文字化けを貼り付ければ、ツールがチェーンを列挙します。UTF-8、GBK、GB18030、Big5、Shift_JIS、EUC-KR、Windows-1252、Windows-1251 のあいだで「どれで書かれたか × どれで読まれたか」の全組み合わせを試します。

完全一致は推測ではなく検証済み

同じチェーンを逆にたどって入力を一字一句再現できたときだけ、候補は完全一致と表示されます。これは決定的な検査です——順位付きの推測だけでは、どの結果を信用してよいのかがわかりません。

チェーンを隠さず表示する

各候補には、バイトを書いたエンコードと、それを誤読したエンコードの両方が示されます。来週また新しいデータで同じ文字列を直し直さないために必要なのは、この情報です。

復元できないときは正直に言う

入力にすでに置換文字が含まれていれば、ツールははっきりそう伝え、すべての候補を部分的として扱います。デコード時に破壊された情報は戻ってきません。戻るふりをしても、午後がまるごと無駄になるだけです。

全エンコードのバイト列を一度に

同じテキストを対応エンコードすべてで 16 進バイト列として横並びに表示し、生の hex を逆方向にデコードもできます。カラム長の見積もり、パケットキャプチャの解読、BLOB の中身確認に使えます。

ブラウザの外に何も出ない

デコードにはブラウザ自身の TextDecoder を使います。アップロードも保存も URL への書き出しもありません——文字化けは本番環境から直接出てくることが多いので、ここは重要です。

実例で見る

UTF-8 を GBK として読んだ — 最も典型的なケース

娴嬭瘯
测试

この 2 文字はもともと UTF-8 として正しく保存されていました(バイト列は E6 B5 8B E8 AF 95)。その 6 バイトを、あるプログラムが GBK として読み込んだ結果がこれです。GBK は 2 バイトずつを 1 文字に組むため、6 バイトが 3 文字に切り直され、文字数まで合わなくなります。レガシーな Windows アプリケーションで UTF-8 のファイルを開いたとき、あるいはデータは UTF-8 なのにデータベース接続の charset が gbk になっているときに、この形で出ます。

UTF-8 を Windows-1252 として読んだ — 西欧系の変種

测试
测试

同じバイト列の、別の読み違いです。Windows-1252 は単バイトエンコードなので、6 つの UTF-8 バイトがそれぞれ 1 文字になりました。ラテン文字圏で頻繁に起きるのはこちらで、café が café、naïve が naïve になります。目印は Ã、Â、â と、対になって現れる妙な記号類です。

手元にあるのが 16 進数のバイト列だけの場合

B2 E2 CA D4
测试

文字化けしたテキストではなく、パケットキャプチャや BLOB カラムから出てきた 16 進ダンプを見ていることもあります。その hex を 2 つ目のセクションに貼り付け、エンコードを選んでください。B2 E2 CA D4 は GBK では 测试 です——同じ 2 文字は UTF-8 なら 6 バイト(E6 B5 8B E8 AF 95)を占め、Windows-1252 ではそもそも表現できません。

復元できない文字化けの見分け方

鏁版嵁搴�
(部分的にのみ復元可能)

数据库 は UTF-8 で書かれ GBK として読まれましたが、最後のバイト対が GBK では意味を持たず、デコーダはそれを U+FFFD に置き換えました。そのバイトはもう失われています。ツールは体裁のよい推測でごまかさず、この状況をそのまま表示します——先頭側の 数据 は復元できますが、最後の 1 文字は復元不能で、元データまで遡る必要があります。

使い方

  1. 1

    文字化けしたテキストを貼り付ける

    そのまま貼るだけで、先にエンコードを特定する必要はありません。短い断片で十分——十数文字あればたいていチェーンは絞り込めます。

  2. 2

    先頭の候補とバッジを読む

    完全一致は、同じチェーンを逆にたどると入力を一字一句再現できるという意味です。部分的なら再現できないので、結果は手がかり止まりと考えてください。

  3. 3

    エンコードチェーンを確認する

    各候補には、原文が実際に書かれたエンコードと、それを誤読したエンコードが表示されます。文章の中身だけでなく、上流のどこを直すべきかがわかります。

  4. 4

    必要ならバイト列を見る

    2 つ目のセクションは任意のテキストを主要エンコードすべてのバイト列で表示し、生の hex を逆方向にデコードもします。カラム長の見積もりやプロトコルのフレーム確認に使ってください。

かえって悪化させる操作

そもそも壊れていないテキストを変換する

正しく表示されている文字列をそれでも変換すれば、避けようとしていた文字化けを自分の手で作り出すことになります。まず表示を確認してください。フォントが無い場合は豆腐(□□□)になり、エンコードの問題なら別の文字になります。

✗ 誤り
iconv -f UTF-8 -t GBK correct.txt > broken.txt
✓ 正しい
# まず現在のエンコードを確認する
file -I correct.txt   # charset=utf-8 → 変換不要

データが持っていない文字セットを宣言する

MySQL のカラムの宣言文字セットを変えても、中に入っているバイトが再エンコードされるわけではありません。latin1 のデータを utf8 と宣言すると、サーバーは正当な UTF-8 ではないバイトを返し、ドライバがそれを U+FFFD に置き換えます——その時点でデータは破壊されます。

✗ 誤り
ALTER TABLE t MODIFY c VARCHAR(255) CHARACTER SET utf8mb4;
✓ 正しい
-- 一度バイナリ型を経由してバイトを保持し、再解釈させない
ALTER TABLE t MODIFY c VARBINARY(255);
ALTER TABLE t MODIFY c VARCHAR(255) CHARACTER SET utf8mb4;

部分的な復元を信用する

部分的と表示された候補は往復検証を通っていません。追いかける価値のある手がかりではありますが、データベースに書き戻してよい答えではありません。完全一致が 1 つも出てこないなら、入力の時点ですでに情報が失われている可能性が高く、元のバイトまで戻る必要があります。

✗ 誤り
// バッジが何と言おうと先頭の候補を採る
db.update(row.id, candidates[0].text);
✓ 正しい
// 往復検証を通ったものだけ書き戻す
if (candidates[0].lossless) db.update(row.id, candidates[0].text);

Python 2 の習慣がまだ通じると思い込む

Python 3 では、すでに bytes のものに encode を、すでに str のものに decode を呼ぶと、ASCII 経由の往復を黙って行う代わりに例外が上がります。境界で一度だけデコードし、それ以降はテキストとして扱ってください。

✗ 誤り
text = raw.decode('utf-8').encode('gbk').decode('utf-8')
✓ 正しい
# 境界で一度だけ、ファイルが実際に使っているエンコードでデコードする
with open(path, encoding='gbk') as f:
    text = f.read()

こんなときに使う

データベース移行のあとが全部文字化け
実体は UTF-8 のバイトなのに latin1 と宣言されたレガシー MySQL のテーブルが、単一の原因としては最も多い出どころです。ALTER TABLE を書く前に、化けた行を本ページに貼って実際のチェーンを確認してください——逆方向に変換してしまうと、復元できたはずの問題が永久的な破壊に変わります。
CSV を Excel で開いたら読めない
Windows 版 Excel は今も、BOM のない CSV をシステムのコードページで解釈します。そのため UTF-8 で書き出したファイルは文字化けして開きます。本ページでチェーンを確認したうえで、BOM 付きで書き出し直すか、テキストウィザードからエンコードを明示して取り込んでください。
レガシーなサービスが吐くログ
GBK や Shift_JIS に合わせて作られたアプリケーションは、ログもそのエンコードで書きます。一方、現代のログ収集基盤はすべてを UTF-8 として読みます。1 行貼れば復元できますし、何もアップロードされないので本番ログのままで作業できます。
ZIP のファイル名が壊れた
ZIP フォーマットにはエンコードを記録するフィールドがありません。そのため日本語や中国語の Windows で作られた書庫は、ファイル名を Shift_JIS や GBK のまま持ち、Unix 側のツールがそれを UTF-8 として読みます。リネームする前に、ここで本当のファイル名を復元してください。
データベースのカラム長を見積もる
バイトビューは同じテキストを全エンコードで一度に並べます。漢字 1 文字は UTF-8 で 3 バイト、GBK では 2 バイト——VARCHAR(50) が切り詰めバグに変わるのは、まさにこの手の差です。

文字化けはなぜ起きるのか

バイトは残る、意味は残らない
エンコードは文字をバイトに写し、デコードはバイトを文字に戻します。文字化けとは、間違った対応表で行われたデコードです。バイトが壊れたことは一度もありません。だから間違ったデコードを逆向きに実行すれば原文が正確に戻ります——その間違ったデコードが何も捨てていなければ、という条件つきですが。
なぜ日本語・中国語・韓国語が最も被害を受けるのか
ASCII は 0x00–0x7F を占め、主要なエンコードはこの範囲について完全に一致しています。だから英語のテキストは無傷で通り抜けます。日本語・中国語・韓国語は多バイト列を必要とし、各エンコードは区切り方について食い違います。UTF-8 は漢字 1 文字に 3 バイト、GBK は 2 バイト。UTF-8 のバイト列を GBK のデコーダに与えると区切りがずれ、文字数も中身も違う列ができあがります。
往復テスト
各候補チェーンについて、ツールは復元したテキストを 1 つ目のエンコードで再エンコードし、2 つ目のエンコードで再デコードします。それが入力を一字一句再現すれば、そのチェーンはすべての文字を説明できているということで、候補は完全一致になります。テストに落ちた候補も表示は残します。完全な再現に至らなくても、部分的な復元だけで原文が判別できることが多いからです。
エンコード表はどこから来るのか
デコード方向はブラウザの TextDecoder がそのまま供給します。逆方向は厄介で、TextEncoderUTF-8 しかサポートしません——そこでツールはバイト空間を走査し、各バイト列が何を意味するのかをデコーダに問い合わせて逆引き表を組み立てます。おかげで対応関係は常にブラウザ自身の挙動と一致し、変換表を端末に配信する必要もありません。
並べ替えのヒューリスティックと、その限界
往復テストの外側では、候補はテキストのうち常用漢字(GBK の先頭バイトが 0xB0–0xF7 に入るもの)がどれだけを占めるかで採点され、置換文字・半角カタカナ・制御文字は減点されます。半角カタカナは Shift_JIS 誤読の強いシグナルです。通常の日本語テキストではほとんど使われないからです。これはヒューリスティックであり、同点を崩すことはできても真偽を確定するものではありません。

二度と起こさないために

文字列ではなく発生源を直す
各候補の下に示されるエンコードチェーンが、どのコンポーネントの設定が誤っているかを教えてくれます。接続の charset、ファイルリーダー、書き出し設定を直さずにテキストだけ直しても、明日また新しいデータで同じ作業をすることになります。
ファイル全体を変換する前に方向を確定させる
まず代表的な 1 行を本ページに通してください。 逆方向に変換すると置換文字が生まれます。最初の誤読と違って、そのステップは可逆ではありません。
どこでもエンコードを明示的に指定する
データベース接続の charset、HTTP の Content-Type、ファイルオープンの呼び出し、CSV の書き出し。「システムのエンコード」に任せている箇所はすべて、コードが別のマシンに移った瞬間に同じバグが再発する箇所です。
MySQL では utf8 ではなく utf8mb4 を使う
MySQL の utf8 は 1 文字あたり最大 3 バイトしか格納しないため、絵文字や一部の稀な漢字が黙って切り捨てられます。utf8mb4 が本物の UTF-8 です。これは文字化けとは別種の故障で、本ツールでは救えません——バイトが本当に失われているからです。
修正を検証し終えるまで元のバイトを残す
変換の前にコピーを取ってください。元のバイトが残っている限り、どんな誤ったデコードも可逆です——置換文字で上書きしてしまえば、本ページも、他のどんなツールも取り戻せません。

よくある質問

日本語や中国語が文字化けしたとき、どう直せばよいですか?
本ページ上部の入力欄に、文字化けしたテキストをそのまま貼り付けてください。ツールが考えられるエンコードチェーンをすべて試して結果を並べ替えるので、自分でエンコードを特定する必要はありません。大多数のケースは 2 通りに収まります。UTF-8 のテキストが GBK として読まれた場合(娴嬭瘯 のような漢字が並びます)と、UTF-8 のテキストが Windows-1252 として読まれた場合(测试 のような文字が並びます)で、どちらも正確に復元できます。
「完全一致」バッジは実際に何を検証しているのですか?
復元処理を逆向きに実行しています。復元されたテキストをチェーンの 1 つ目のエンコードで再びバイト列に変換し、そのバイト列を 2 つ目のエンコードで再びデコードします。その結果が貼り付けた入力を一字一句そのまま再現するなら、そのチェーンは入力のすべての文字を説明できていることになり、バッジは完全一致になります。これは類似度スコアではなく決定的な往復検証です——だからこそ、完全一致の結果は「順位が上の推測」とは信頼性の質がまったく違います。
なぜ復元できない文字化けがあるのですか?
壊れたのが、あなたの目に触れる前だからです。デコーダは自分のエンコードで意味を持たないバイト列に出会ったとき、元のバイトを保持しません——U+FFFD(� と表示されます)に置き換えて捨ててしまいます。この処理は非可逆です。テキストに � が含まれているなら、その文字はどんなツールを使っても戻ってきません。本ページは、それらしく見える推測を出す代わりに、その事実をそのまま伝えます。
GBK、GB2312、GB18030 の違いは何ですか?
同じ系統の 3 世代で、後のものが前のものの上位集合になっています。GB2312(1980)は簡体字 6,763 文字を収録し、日常のテキストにはこれで足ります。GBK(1995)は繁体字の字形を含む約 21,000 文字まで拡張しました。GB18030(2000、中国では強制規格)は Unicode 全体をカバーします。文字化けの復元では、ほぼ常に GBK が正解です。問題を起こした側のソフトウェアが、当時 GBK に合わせて書かれていたからです。
ISO-8859-1 と Windows-1252 は同じものですか?
規格の上では違いますが、ブラウザの中では同じです。ブラウザが実装している WHATWG Encoding Standard は、iso-8859-1latin1windows-1252 のラベルとして扱います。両者が異なるのは 0x80–0x9F の範囲だけで、本来の ISO-8859-1 ではそこが制御文字、Windows-1252 では em ダッシュや曲がり引用符といった印字可能な記号になっています。そして文字化けに現れるのはまさにその印字可能な記号なので、実用上は Windows-1252 のほうが役に立ちます。本ツールは 2 つの名前を 1 項目にまとめています。
貼り付けたテキストはどこかにアップロードされますか?
いいえ。デコードはすべてブラウザ内蔵の TextDecoder で行われ、ネットワークに送信することも、ストレージに書き込むことも、URL に載せることもありません。このツールでは特に重要な点です。復元したい文字化けの出どころは、たいてい本番ログ、顧客レコード、データベースのダンプ——サーバー側で処理するツールに貼ってはいけない類のものだからです。
一部分だけでなく、ファイル全体を変換できますか?
本ページが扱うのは貼り付けたテキストです。ファイル全体はコマンドラインのほうが向いています。macOS と Linux なら iconv -f GBK -t UTF-8 input.txt > output.txt、PowerShell なら Get-Content -Encoding Default in.txt | Set-Content -Encoding UTF8 out.txtまず代表的な 1 行を本ページに貼ってエンコードチェーンを確定させてから、コマンドに書くエンコード名を決めてください——方向を取り違えると、1 行の問題が 1,000 行の問題になります。
なぜ答えを 1 つに絞らず、複数の候補を出すのですか?
読めるテキストを生むチェーンが複数存在することは実際にあり、ツールはそれを隠しません。候補の並び順は、まず往復検証を通った(完全一致)チェーンが先で、残りは可読性のヒューリスティックで並びます——常用漢字を加点し、置換文字・半角カタカナ・制御文字を減点します。ヒューリスティックは同点を崩すためのもので、真偽を決めるものではありません。2 つの候補がどちらも成り立つように見えるときは、各候補の下に表示されるエンコードチェーンが、どちらが自分のデータの出どころと整合するかを教えてくれます。

ASCIIコード表・アスキー変換ツール

エンコーディングとフォーマット

ASCII 128文字の完全なコード表。10進・16進・8進・2進を並べ、文字⇔ASCIIコードの双方向変換もその場でできます。制御文字には各言語のエスケープ、キャレット表記、そして実際にどこで出会うかを併記。すべてブラウザ内で動作し、入力は送信されません。

Base64エンコーダー&デコーダー

エンコーディングとフォーマット

Base64のデコード・エンコードが無料でオンラインで行えます。リアルタイム変換、UTF-8・絵文字対応。100%ブラウザ上で動作しデータは外部に送信されません。登録不要。

Base64 画像変換ツール

エンコーディングとフォーマット

Base64 文字列やデータURIをブラウザ上で画像に戻します。プレビューし、寸法と MIME を確認して、PNG・JPG・GIF・SVG としてダウンロード。アップロード不要。

CSV to JSON 変換ツール

エンコーディングとフォーマット

CSVをブラウザ内で即座にJSONに変換。RFC 4180・型推論・ヘッダー行・大整数安全対応。100%プライベート、アップロード不要。

.env から JSON への変換ツール

エンコーディングとフォーマット

.env ファイルを貼り付けるだけで即座に JSON に変換。データベースのパスワードや API キー、トークンはブラウザから一切出ません。100% プライベート、アップロード不要、無料の dotenv パーサー。

無料HTMLエンティティデコーダー — HTMLをアンエスケープ

エンコーディングとフォーマット

HTMLエンティティをデコードし、HTMLをオンラインでアンエスケープ。無料・登録不要・100%ブラウザ内処理。名前付き・10進・16進の参照を文字に戻します。アップロードは一切なし。