譁�ュ怜喧縺代→縺ッ縲∵悽譚・陦ィ遉コ縺輔l繧九∋縺肴枚蟄励′豁」縺励¥陦ィ遉コ縺輔l縺ェ縺�%縺ィ縺ァ縺ゅk縲
縺ゥ縺�@縺ヲ譁�ュ怜喧縺代′襍キ縺阪k縺ョ?繝舌き縺ェ縺ョ?
縺ッ縺≫ヲ
繧ィ繝�ぅ繧ソ縺後ヰ繧ォ縺縺」縺溘j縲√ユ繧ュ繧ケ繝医r諢丞峙縺励↑縺�枚蟄励さ繝シ繝峨〒隱ュ縺ソ霎シ繧薙□蝣エ蜷医↓逋コ逕溘@縺セ縺吶
概要
文字化け(もじばけ)とは、文字が化けること。パソコン上で通常の文字で書かれていたはずのものが全然違う文字に変換されて読めない状態。ウェブサイト上ですべての文字が「逋コ逕溘繝峨r諢」などやたら画数の多い漢字になってしまう現象のことなどを指す。
近年においては、「たすけて」のように特殊なUnicode文字を使用して奇妙な文字列を表示させるものも「文字化け」と呼ばれることがあるが、ここでは従来の意味の文字化けを解説する。
文字化けが発生する理由
我々がインターネットで文章を送信するとき、文字は必ずデータに変換されてから送信される。この変換方法が「文字コード」である。
文字コードは扱う言語や文字集合によって様々なものが存在するが、英語の場合は実質ほぼ1通り(ASCII)なのに対し、日本語の場合、(まず文字集合から違うものもあるが)UTF-8, UTF-16, Shift_JIS, EUC-JP, ISO-2022-JPなど、多くのバリエーションが存在する。なので、受け取った文章がどの文字コードを用いて変換されたのかを正しく判別することができれば、元の文章を正しく復元することができるが、誤って元と違う文字コードで復元した場合、てんで訳の分からない文章が出てきてしまう。これが文字化けである。
例えるなら、英語で書かれた文章をローマ字で読んでも全く意味の分からない文章になるのと同じである。(You are so cute! → よう あれ そ くて!)
例
例として、発生頻度が高く、文字化け後の文章も特徴的な、UTF-8→Shift_JISの文字化けを検証してみる。
文字化け前の文章を「ニコニコ大百科(仮)」とすると、
文字化け前 | Unicode番号 | データ列 | JIS番号(JIS X 0201/0213) | 文字化け後 |
---|---|---|---|---|
ニ | U+30CB | E3 | 1-69-67 | 繝 |
83 | ||||
8B | 1-22-69 | 九 | ||
コ | U+30B3 | E3 | ||
82 | 1-4-21 | さ | ||
B3 | ||||
ニ | U+30CB | E3 | 1-69-67 | 繝 |
83 | ||||
8B | 1-22-69 | 九 | ||
コ | U+30B3 | E3 | ||
82 | 1-4-21 | さ | ||
B3 | ||||
大 | U+5927 | E5 | 1-74-6 | 螟 |
A4 | ||||
A7 | A7 | ァ | ||
百 | U+767E | E7 | 1-77-89 | 逋 |
99 | ||||
BE | BE | セ | ||
科 | U+79D1 | E7 | 1-78-9 | 遘 |
A7 | ||||
91 | デコード不可 | |||
( | U+0028 | 28 | 28 | ( |
仮 | U+4EEE | E4 | 1-72-29 | 莉 |
BB | ||||
AE | AE | ョ | ||
) | U+0029 | 29 | 29 | ) |
※デコード不可: 91はShift_JISで1面33/34区を示すバイトだが、続くバイト28が点番号を示す40~FCの中にないため、不正なデータとなり、デコードできない。この場合の処理はデコーダによって異なるが、多くの場合、デコードできなかった1バイトのみを不正なデータとみなし除去した結果を表示する。
以上のように、文字化けした結果は「繝九さ繝九さ螟ァ逋セ遘(莉ョ)」となる。
文字化けの直し方
ウェブページの閲覧中に文字化けが発生した時
ウェブページの文字化けは、送られてきた文章データの文字コードをブラウザが正しく判別できなかった場合に発生する。
この場合、ブラウザに手動で正しい文字コードを認識させることで直すことが出来る。
どの文字コードで書かれているかは、ブラウザが判別できないのだからいろいろそれっぽいものを適当に切り替えて当てるしかない。なお、日本語のウェブページでよく使用されるのは、
などである。
文字コードの切り替え方
Internet Explorerの場合
Firefoxの場合
Google Chromeの場合
Operaの場合
既に文字化けした文章を復元する場合
文字化けしたデータを別のデータとして保存してしまった場合や、ソフトウェアに文字コードを切り替える機能がない場合など、元のデータがどのようであったかを知るのが困難な場合も存在する。このような場合も、元の文章がどのようであったかを知ることができる場合がある。
例えば、テキストエディタ等で文字化け時に読み取った文字コードでファイルを保存し、その後適切な文字コードで同じファイルを読みなおすと、原理的には正しく元の文字列を復元することができる。
ただし、先のUTF-8→Shift_JISでの変換例でもあったように、文字コード変換の際に抜け落ちてしまっているデータが存在する可能性があり、部分的に正しく復元できない事が多い。(先程の「繝九さ繝九さ螟ァ逋セ遘(莉ョ)」をShift_JIS→UTF-8で逆変換すると「ニコニコ大百��(仮)」となる。)
この作業は手間がかかるが、もじばけらったのようなサービスを用いることにより作業量を軽減することができる。
文字化けの作り方
文字化けは、意図的に発生させることもできる。その方法を以下に示す。
エディタ(オススメ)
文字コードを指定して保存・読込できるエディタを使い、保存と読込で別の文字コードを指定する。(TeraPad 等)
何もインストールせず(Windows 2000以降のNT系OS)
- メモ帳で文字を書き、保存するときに「文字コード(E): UTF-8」で保存
※Ver.1903以降のWindows 10の場合は初期設定でBOMのないUTF-8である。 - コマンドプロンプト([スタート]->プログラム->アクセサリ->コマンドプロンプト)を開く
- type と打ち込む。(typeの横はスペースを入れる事)
- コマンドプロンプトに先ほど保存したファイルをドラッグ&ドロップする
- [Enter]キーを押す
- 表示される(右クリックで選択範囲を指定してコピー可能)
ただし、かつてのWindowsのメモ帳(Windows 10のVer.1809まで)ではUTF-8にBOMが付与される仕様だったため、冒頭の「・ソ」はBOMであり本文でないことを留意する必要がある。
Microsoft Excel
Excelはcsvファイルの場合、UTF-8と解釈させるにはBOMが必要である。
- Windows 10(Ver.1903以降)のメモ帳で文字を書き、保存するときに初期設定の「文字コード(E): UTF-8」で保存
- 保存したテキストファイルの拡張子をcsvに変更する
- Excelでcsvに変更したテキストファイルを開く
ブラウザ(Internet Explorer)
適当なページを開いて、右クリック->エンコード(E)で別の文字コードを指定する。
このとき ●自動選択 をクリックして機能を解除すること。
ページによって変換できない場合もあります。
また、HTML文書を自分で作成しmetaタグで文字コードをShift_JISと宣言しておいてUTF-8で保存することによって任意の文章を文字化けさせることもできる。
ブラウザを用いると�のように文字が登録されていないものもそのまま表示(?)され、よりそれらしい結果を得られる。
ただし、これは裏返すとその1文字に関しては化けていないことを意味するためその辺はお好みで。
変換サンプル
文字化けしています!!!をそれぞれの文字コードで変換した例
縦:保存 横:読込
保\読 | SJIS | EUC | UTF-8 | Unicode |
---|---|---|---|---|
SJIS | 文字化けしています!!! | サU垠Zアュアウアツアアレアオ!!! | ?¶???≫? ̄?μ??¢??・!!! | ?????????℡ |
EUC | ハクサ嵂ス、ア、キ、ニ、、、゙、ケ!!! | 文字化けしています!!! | ?≫u2??±?・?????1!!! | ?????????℡ |
UTF-8 | ・ソ譁・ュ怜喧縺代@縺ヲ縺・∪縺・!! | 鏤炊サ・Lシ・披 ケΤ6・・ア#・障ア8!!! | 文字化けしています!!! | ????臣鞁臣?臣?℡ |
Unicode | ㌃W[SQ0W0f0D0~0Y0! ! ! | ・eW[SQ0W0f0D0~0Y0! ! ! | yt?eW[SQ0W0f0D0~0Y0! ! ! | 文字化けしています!!! |
関連動画
関連リンク
関連項目
- 19
- 0pt