【Excel対応】CSV文字化け修復&文字コード変換ツール

CSVやテキストファイルを読み込み,UTF-8・Shift_JIS・EUC-JP・ISO-2022-JPへの文字コード変換と,先頭1KBのHex表示を行います.UTF-8にはBOMを追加できます.「縺薙s縺ォ縺。縺ッ」のような文字化けは,最大6経路の復元候補を比較できます.

読み込み中...

ZeroToolsのブラウザ内処理とプライバシー

ZeroToolsは,入力内容を端末内で処理するツールを中心に提供しています.各ツールの対応範囲と制限を確認して利用してください.

データの取り扱い・プライバシー方針
第1章

ツールの二つの機能タブと4種類の変換先文字コード

このツールは,大きく分けて「コード変換・Hex」と「文字化け候補」という二つのタブで構成されています.それぞれのタブは,現在手元にあるデータの状態と利用目的によって使い分けます.

手元に元のテキストファイルや正しい状態の文字列があり,別のソフトウェアやシステムで読み込める文字コードへ作り直したい場合は「コード変換・Hex」のタブを使用します.一方,すでにデータが「縺薙s縺ォ縺。縺ッ」のような読めない記号や漢字の羅列になっており,元の正しいバイト列が残っていない場合は,「文字化け候補」のタブを使用して元データの解読を試みます.

「コード変換・Hex」のタブで指定できる変換先の文字コードは,UTF-8,Shift_JIS,EUC-JP,ISO-2022-JPの4種類に限定しています.UTF-8はUnicode文字を可変長のバイト列で表す現在主流の形式であり,世界中のさまざまな文字を記録できます.

Shift_JISとEUC-JPは,古くから日本のコンピューター環境で利用されてきた日本語向けの形式ですが,Unicodeに存在するすべての文字を表現できるわけではありません.ISO-2022-JPは,電子メールなどで使われてきた,エスケープシーケンスを用いて文字集合を切り替える7ビットの形式です.

当ツールでは,ファイルの出力先としてUTF-16やUTF-32を選択することはできません.内部処理では,JavaScriptの文字列をcharCodeAt()などで取得できるUTF-16相当のコードユニットとして扱いますが,ファイルとして外部に保存する際の形式には先の4種類のみを提供しています.

ツール名に「CSV」という言葉が含まれていますが,この機能はカンマの区切り,引用符の囲み,あるいは列の数などをCSVの構文として解析したり編集したりするものではありません.CSVファイルであってもTXTやHTMLと同じテキストのバイト列として扱い,文字コードの変換のみに特化しています.

列の並べ替えやExcelのブック形式(XLSX)への変換を行いたい場合は,当サイトの別の専用ツールを利用してください.

第2章

ファイル読込と手入力,自動検出の仕組みと限界

「コード変換・Hex」タブでは,変換したいテキストを直接入力する「手入力」と,手元のファイルを読み込ませる「ファイル選択(またはドラッグ&ドロップ)」の二つの入力方法を用意しています.

手入力欄にテキストを入力した場合,その文字列はブラウザ上でJavaScriptのUnicode文字列として受け取られます.画面上では変換元の文字コードが「UTF-8(手入力)」として表示され,入力した文字列をそのまま指定した変換先の文字コードへエンコードします.

最初から正しく読める状態の短い文章を,手軽に別の文字コードのバイト列へ変換して保存したい場合に便利な方法です.ファイルが選択されている状態では手入力欄は非表示になり,ファイルを解除すると再び手入力での操作が可能になります.

ファイルを読み込ませた場合,そのデータはUint8Arrayというバイト列の形式でメモリ上に保持されます.読み込みの直後,内部で利用しているライブラリの自動検出機能を用いて,元のテキストがどのような文字コードで書かれているかの判定を試みます.ASCII,UTF-8,Shift_JIS,EUC-JP,ISO-2022-JP,UTF-16系として判定できた場合,その文字コードに従ってバイト列からJavaScriptのUnicode文字列へデコードします.

画像のようなバイナリデータや,テキストとしての判定が不可能なファイルが読み込まれた場合は,無理に文字として処理せずエラーとして停止します.

読み込んだファイルのサイズが50KB(50,000バイト)未満の場合は,検出した文字コードを使ってテキストとして読み直した内容を,画面上にプレビューとして表示します.これにより,自動検出が意図した結果になっているかを視覚的に確認できます.50KB以上のファイルでも文字コード変換は試みますが,長いテキストを画面に展開してブラウザの動作が重くなるのを防ぐため,プレビュー表示のみを省略し,代わりにファイルのサイズ情報を案内します.

ファイルの文字コード自動検出は,あくまでバイト列の特徴に基づいた推測です.ファイルの中に記述されている文章の意味や,作成されたOSを判別する機能ではありません.そのため,半角の英数字(ASCII)のみで構成された短いデータや,複数の文字コードの規則に偶然合致するバイト列の場合,実際の形式とは異なる文字コードと判定する可能性があります.

画面に表示される検出名だけを信用せず,50KB未満のプレビュー表示や変換後のHex表示,保存後に実際にソフトウェアで開いた結果を併せて確認してください.

第3章

文字コード変換処理,UTF-8 BOM,保存ファイル名とHex表示

ファイルや手入力からUnicode文字列として読み込まれたテキストは,利用者が選択した4種類のいずれかの形式へエンコードされます.この変換処理において重要なのは,「変換先の文字コードで表現できない文字が含まれていた場合の挙動」です.当ツールでは,対応していない環境依存文字や新しい絵文字などを,変換の過程で黙って疑問符(?)や代替文字に置き換えません.

変換できない文字を検出した時点で処理を中断し,「変換先の文字コードで表せない文字が含まれています」というエラーメッセージを画面に表示します.意図せず文字が欠落した不完全なファイルが,正常なデータとして保存されることを避けるための仕様です.

変換先の文字コードとして「UTF-8」を選択した場合のみ,「UTF-8 BOMを先頭に付ける」というチェックボックスが表示されます.これをオンにすると,当サイトのプログラム側で変換後のファイルの先頭に「EF BB BF」という3バイトのデータ(BOM:Byte Order Mark)を明示的に追加して保存します.

BOMはテキストの本文ではなく,そのファイルがUTF-8で記述されていることを読み込み側のソフトウェアへ伝えるための目印です.すべてのシステムがBOMを必要とするわけではなく,BOMを受け付けない取込先もあるため,相手側の仕様に合わせて追加するかどうかを判断してください.

Shift_JIS,EUC-JP,ISO-2022-JPを選択した場合は,このチェックボックスは表示されず,BOMも付加されません.

変換後のファイルをダウンロードする際の保存名は,元ファイルの名前,変換先の形式,BOMの有無を組み合わせて自動的に生成されます.たとえば元の名前が「data.csv」で,Shift_JISに変換した場合は「data_sjis.csv」,UTF-8でBOMを付けた場合は「data_utf8_bom.csv」となります.

拡張子のないファイルではtxtを補い,手入力から作成した場合は「converted」という基本名を使います.元のファイルを上書きせず新しい名前を提案し,変換前と変換後のデータを手元で比較できるようにしています.

画面の下部には,変換後のデータの先頭1KB(最大1,024バイト)を16進数で確認できる「Hexプレビュー」を表示します.1行につき16バイトずつ区切り,左端に0から始まるデータ位置(オフセット),中央に2桁の16進数(Hex),右端にASCII領域の表示可能な文字だけをテキストとして並べます.

表示できないバイトはピリオド(.)で表されます.UTF-8でBOMを付与した場合は,先頭に「ef bb bf」というバイト列が追加されていることをここで目視確認できます.これはファイル全体の確認用ではなく,先頭部分のバイト構造やエスケープシーケンスなどを保存前にチェックするための補助機能です.

第4章

文字化けを逆算する最大6経路の候補と簡易的な目印

「文字化け候補」のタブは,本来の文字コードと,テキストエディタなどがファイルを開く際に仮定した文字コードが食い違ったために発生した文字化けを解読するための機能です.ここでは,文字化けの主な原因となりやすいUTF-8,Shift_JIS,EUC-JPの3つに着目し,「本来の形式」と「誤って読まれた形式」の組み合わせを生成します.

同じ文字コード同士を除外すると,順序付きの組み合わせは最大6経路になります.

この逆算処理では,入力された文字化けテキストを,まず「誤って読まれた形式」であると仮定して元のバイト列へ逆エンコードします.そして,得られたバイト列を「本来の形式」であるとしてデコードし直します.たとえば,本来UTF-8だったファイルがShift_JISとして誤読された文字化けを直す場合,入力文字列をShift_JISの規則でバイト列に戻し,それをUTF-8のテキストとして読み直して結果を出力します.

画面にはこの6経路の処理結果がリストとして表示されますが,必ずしも6つすべての候補が表示されるわけではありません.現在の文字列を仮定した文字コードのバイト列に戻せない経路,結果が空になった経路,結果が入力と同じ経路,他と同じ結果になった重複経路は表示から除外されます.そのため,入力する文字列によって候補数は0件から6件の間で変動します.

表示された候補のうち,一定の条件を満たすものには「日本語文字あり」という緑色の表示が付きます.これは,変換後の文字列にひらがな,カタカナ,または漢字が含まれ,予期しない制御文字や変換失敗を示す置換文字(U+FFFD)が含まれていないことを確認する簡易的な目印です.

しかし,この目印は「正しく復元できた正解の文字列」であることを保証しません.言語学的な語彙や文法,文字の出現頻度を解析しているわけではなく,別の文字化け経路でも偶然この条件を満たす場合があります.

また,この機能を使っても,すべての文字化けを元に戻せるわけではありません.文字化けしたテキストをコピーする過程で,表現できない文字がすでに「?」や置換文字(U+FFFD)に置き換わっている場合,そこに含まれていた元のバイト情報は失われており,逆算では復元できません.

複数回にわたって別の文字コードで誤変換と上書き保存を繰り返したデータや,中国語など別の文字コードが関与する文字化けも,この6経路では解読できない場合があります.どの候補が正しいのか,数字や重要な記号が欠落していないかは,利用者が文脈や元資料を確認して判断する必要があります.

第5章

ExcelへCSVデータを取り込む前の事前確認と注意点

文字コードの変換を行う一般的な目的の一つに,CSVファイルをMicrosoft Excelで文字化けせずに表示させたいという要望があります.当ツールはこの用途にも使えますが,Excel側のバージョンや設定によってファイルの読み込まれ方は異なるため,取り込む前にいくつかの特性を理解しておく必要があります.

Microsoftの公式な案内では,UTF-8形式で保存されたCSVファイルは,ファイルの先頭にBOMが付いていればExcelで通常どおり開くことができます.そのため,Excelで直接開く用途では,まず変換先として「UTF-8」を選択し,「UTF-8 BOMを先頭に付ける」をオンにして保存した複製で試す方法があります.

ただし,CSVの構造,Excelの版や設定まで含めた成功を保証するものではありません.

BOMなしのUTF-8ファイルのままで扱いたい場合は,Excelの「データ」タブにある「テキスト/CSVから」という取込機能を使用する方法があります.この機能では,取込時のプレビュー画面でファイルの元の形式や区切り文字を確認できます.画面の項目名や操作手順はExcelの版やOSによって異なることがあるため,実際のプレビューを見てから読み込んでください.

Shift_JISへ変換してExcelで開く方法もありますが,Shift_JISはUnicodeのすべての文字をカバーしていません.絵文字などが含まれている場合,当ツールでは変換エラーとなって処理が停止します.また,利用している変換ライブラリのSJIS実装はWindows-31JやCP932の拡張領域も扱いますが,Shift_JISとCP932は厳密には同一の規格ではありません.

特定アプリケーションの外字や独自マッピングまで一致することは保証できません.

文字コードが正しく適合し,文字化けが解消されても,Excel特有の「データ型の自動解釈」による別の問題が起きることがあります.日付に見える文字列,先頭が0の長い数字,指数表記に該当する文字列などを,Excelが自動的に数値や日付型へ変換する場合があります.当ツールは文字コードを変換するだけで,CSVの列型を指定したり,区切り,引用符,セル内改行の構造を検証・修復したりする機能はありません.

業務データを変換する前に,代表的な日本語,記号,先頭に0が付く番号などを含む数行の複製で試してください.文字化けが直っているかということと,各列のデータが意図した形式で読み込まれたかを分けて確認すると,OSの地域設定やExcelのバージョンによる差を見つけやすくなります.

第6章

ブラウザ内でのデータ処理,情報の欠落,非対応範囲

当ツールのファイル読込,文字コードの自動検出,エンコードとデコード,文字化け候補の計算,保存用ファイルの生成は,閲覧しているブラウザ内のJavaScript処理として実行されます.ツールの変換ロジックには,選択したファイルの内容や手入力したテキストを文字コード変換用の外部APIへ送信したり,サーバーへ保存したりする処理は実装していません.

ただし,これはサイト全体が完全にオフラインで動作し,通信が一切発生しないという意味ではありません.ページの表示,アクセス解析,広告の配信など,ウェブサイトを構成する一般的な通信は発生し得ます.ブラウザ拡張機能によるページ内容の読取りや,文字化け候補をコピーした際に端末のクリップボードへデータが移る動作まで遮断するものでもありません.

機密性の高いデータを扱う際の安全性を,サイト全体として保証するものではありません.

当ツールの変換ロジックは,encoding-japaneseの標準的なインターフェースに依存しています.各文字コードのバイト配列を一文字ずつ独自に解析する専用パーサーは実装していません.OSの違いで発生する波ダッシュなどの非互換性を専用表で補正する機能や,濁点・半濁点の分離をNFC形式へ自動統一する機能も搭載していません.

文字化け候補についても,入力された文字列を解析して自然な日本語を判定し,最適な候補を一つだけ自動選択する機能はありません.複数ファイルを一括変換するバッチ処理や,変換履歴の保存にも対応していません.生成された文字列が意味の通るテキストであるかは,人の目で確認する必要があります.

50KBという基準はプレビュー表示を省略するための条件であり,変換処理そのものの上限ではありません.ただし,ファイルはブラウザのメモリへ読み込むため,サイズや端末性能によって処理時間とメモリ使用量が増え,動作が不安定になる場合があります.大きなファイルを一定の速度で処理できる保証はありません.

文字コード変換は,失われたデータを自動的に復元する手段ではありません.変換後のファイルとHex表示を確認し,少しでも疑問があれば元ファイルと見比べてください.常に変換前のオリジナルを残し,複製したファイルで試すことが,情報の欠落を避けるための基本です.

よくある質問(FAQ)

A.
Microsoftの案内では,UTF-8形式のCSVはBOM付きなら通常そのまま開くことができます.まずはUTF-8を選び,BOMを付けた少量の複製データで試してください.BOMなしのUTF-8は,Excelの「データ」から「テキスト/CSVから」を選んで取り込む方法があります.版・OS・列ごとの自動解釈までの完全な互換性を保証するものではありません.
A.
必ず元に戻せるわけではありません.UTF-8・Shift_JIS・EUC-JP間で起こり得る誤読を逆算し,異なる結果となる最大6経路を候補として表示します.すでに置換文字(U+FFFD)や疑問符に変わって元の情報が失われた場合や,複数回誤変換されたデータは復元できません.「日本語文字あり」も簡易的な目印であり,正解を保証しません.
A.
表せない文字を疑問符などへ置き換えず,エラーを表示して変換を停止します.Shift_JIS・EUC-JP・ISO-2022-JPはUnicodeのすべての文字を表現できません.元データから該当文字を確認するか,UTF-8を変換先として選んでください.
A.
自動検出はバイト列の特徴から推測するため,常に正確とは限りません.文字数が少ないファイル,ASCIIだけのデータ,複数の文字コードとして成立するデータは誤判定する場合があります.元テキストのプレビュー,変換後のHex,保存後に開いた結果を併せて確認してください.