情シスの教科書

文字コード編・第1回

文字化けが起こる仕組み

7:53YouTubeで見る

ひとことで言うと

文字化けは、書いた側と読んだ側で、文字コードが違うときに起こります。ファイルが壊れたわけではありません。違う文字コードで読んだだけです。だから、正しい文字コードで読み直せば、元に戻ります。

異動してきたら、最初に確かめること

チェックは、このスマートフォンのブラウザに保存されます。

解説(テキスト版)

はじめに

動画の画面:はじめに(文字化けが起こる仕組み)
動画の画面:はじめに

情シスには、こんな相談が届きます。業者から届いたCSVを、エクセルで開いたら、読めない文字だらけになった、と言われる。

あるいは、外部から届いたメールの、添付ファイルの名前が化けている、と言われる。

どちらも、文字コードの話です。今日から始まる文字コード編、第1回は、文字化けが起こる仕組みをお話しします。

一言で言うと

動画の画面:一言で言うと(文字化けが起こる仕組み)
動画の画面:一言で言うと

先に、一言でまとめます。文字化けは、書いた側と読んだ側で、文字コードが違うときに起こります。

ファイルが壊れたわけではありません。違う文字コードで読んだだけです。だから、正しい文字コードで読み直せば、元に戻ります。

よくある例:CSVとエクセル

動画の画面:よくある例:CSVとエクセル(文字化けが起こる仕組み)
動画の画面:よくある例:CSVとエクセル

たとえば、施設予約のシステムから、今月の予約の一覧を、CSVで一括出力したとします。

システムの画面では、予約日、施設名、利用者名が、きちんと日本語で並んでいます。出力されたCSVの中身も、UTF-8という文字コードで、正しく書かれています。

ダウンロードしたファイルを、パソコンのエクセルで、そのままダブルクリックして開きます。すると、日付や数字は読めるのに、日本語の部分だけが、読めない文字になります。

エクセルが、このファイルを、Shift_JISという、別の文字コードで読んでしまったのです。なぜ、こんなことが起こるのでしょうか。仕組みを見ていきます。

文字は番号で保存される

動画の画面:文字は番号で保存される(文字化けが起こる仕組み)
動画の画面:文字は番号で保存される

コンピューターは、文字を、そのままの形では保存していません。一つひとつの文字に番号を割り当てて、その番号を保存しています。

どの文字に、どの番号を割り当てるか。この決まりのことを、文字コードと言います。

画面は、4つの文字の番号を、Shift_JISと、UTF-8で比べたものです。英字のaは、どちらも、61という同じ番号です。ところが、ひらがなの「あ」、カタカナの「ア」、漢字の「亜」は、Shift_JISでは2つの番号、UTF-8では3つの番号で表されていて、まったく違います。同じ文字でも、文字コードによって番号が違うのです。

違う文字コードで読むと、化ける

動画の画面:違う文字コードで読むと、化ける(文字化けが起こる仕組み)
動画の画面:違う文字コードで読むと、化ける

では、UTF-8で書いたファイルを、Shift_JISで読むと、どうなるでしょうか。

番号はそのままで、読む側は、Shift_JISの決まりで文字に戻します。UTF-8では3つで1文字の番号を、2つずつに区切って読むので、まったく違う文字が並びます。さきほどのCSVの見出しも、同じようにして化けました。

英字のaは、どちらの文字コードでも61なので、化けません。日本語の部分だけが化けるのは、このためです。

ファイルの中身は、正しいままです。エクセルの、データの取り込みの機能で、UTF-8を指定して開けば、きちんと読めます。

書き出すときに、文字コードを選べる

動画の画面:書き出すときに、文字コードを選べる(文字化けが起こる仕組み)
動画の画面:書き出すときに、文字コードを選べる

システムによっては、書き出すときに、文字コードを選べるものもあります。画面は、キントーンの、ファイルに書き出す画面です。

文字コードの欄に、Shift-JIS、UTF-8、BOM付きのUTF-8などが並んでいます。同じデータでも、どの文字コードで書き出すかを、ここで決めているのです。西ヨーロッパの言葉や、中国語の文字コードもあります。文字コードが、国や言語ごとに作られてきたからです。

エクセルで開くなら、Shift-JISか、BOM付きのUTF-8を選べば、化けずに開けます。BOMについては、次回お話しします。ほかのシステムに読み込ませるなら、そのシステムが読める文字コードに合わせます。

メールのヘッダー

動画の画面:メールのヘッダー(文字化けが起こる仕組み)
動画の画面:メールのヘッダー

メールも同じです。メールの先頭には、ヘッダーという、送り主や件名などを書いた部分があります。

本文の文字コードは、ヘッダーの、コンテントタイプという行に、charset=UTF-8のように書かれています。受け取ったソフトは、ここを見て、本文をどの文字コードで読むかを決めます。

件名や、添付ファイルの名前も、文字コードの名前を付けたうえで、英数字に置き換えて、ヘッダーに書かれています。画面の、件名と、ファイル名の行です。

送る側のソフトが、ここを正しく書かなかったり、受け取る側のソフトが、その書き方に対応していなかったりすると、化けます。

特に、添付ファイルの名前は、書き方が何通りかあって、古いソフトとの間で化けやすいところです。外部とやり取りするファイルの名前は、英数字にしておくと安全です。

文字コードにない文字は、消える

動画の画面:文字コードにない文字は、消える(文字化けが起こる仕組み)
動画の画面:文字コードにない文字は、消える

もう一つ、似ているけれど、別の現象があります。文字が、はてなマークや、中黒、四角に置き換わってしまう現象です。

これは、変換した先の文字コードに、その文字がないときに起こります。たとえば、はしごだかの「髙」や、丸で囲んだ数字は、古い文字コードの、基本の部分には入っていません。

文字コードにない文字は、変換した時点で、別の記号に置き換えられて、元の文字の情報が失われます。こちらは、読み直しても戻りません。

化けたまま保存すると、戻せない

動画の画面:化けたまま保存すると、戻せない(文字化けが起こる仕組み)
動画の画面:化けたまま保存すると、戻せない

文字化けで、いちばん気を付けたいのが、化けたまま上書き保存してしまうことです。

化けた文字は、読む側にとっては、正しい文字として扱われています。その状態で保存すると、化けた文字の番号で、ファイルが書き直されます。

こうなると、正しい文字コードで読み直しても、元には戻りません。化けたファイルは、まず保存せずに閉じる。これが鉄則です。

現場でよくある誤解

動画の画面:現場でよくある誤解(文字化けが起こる仕組み)
動画の画面:現場でよくある誤解

現場でよくある誤解を、3つ挙げます。

一つ目。文字化けしたら、パソコンが壊れた、という誤解です。壊れたのではなく、読み方の違いです。正しい文字コードで読み直せば、戻ります。

二つ目。フォントを入れれば直る、という誤解です。フォントは文字の形のデータで、文字と番号の決まりである文字コードとは、別のものです。文字コードの違いは、フォントでは直りません。

三つ目。メモ帳で開いて、保存し直せば直る、という誤解です。保存するときの文字コードを正しく選ばないと、かえって情報が失われることがあります。

文字化けの相談を受けたら、最初に確かめること

動画の画面:文字化けの相談を受けたら、最初に確かめること(文字化けが起こる仕組み)
動画の画面:文字化けの相談を受けたら、最初に確かめること

では、文字化けの相談を受けたら、まず何を確かめればいいでしょうか。

一つ目。元のファイルを残すことです。上書き保存はせず、コピーを取ってから調べます。

二つ目。そのファイルを、どの文字コードで書いたかを、出した側に聞くことです。システムの事業者なら、すぐに答えられるはずです。

三つ目。英数字は読めて、日本語だけが化けているか、です。そうなら、文字コードの違いの可能性が高いです。

理解度テスト

3問です。答えを選んで、「答え合わせ」を押してください。

問1文字化けが起こる仕組みとして、正しいものはどれですか。
問2UTF-8で書き出したCSVを、日本語のExcelでダブルクリックして開いたら、日本語だけが化けました。最初の対応として、正しいものはどれですか。
問3文字が「?」や「・」に置き換わってしまう現象について、正しいものはどれですか。

結果は、このブラウザに保存されます。成績ページで「ふっかつのじゅもん」を作ると、別の端末でも続きから使えます。

チャプター

文字コード編のほかの回

© 合同会社Pons(羽鳥達郎)|自治体情シスの教科書(sysad.pons-llc.com)
研修や勉強会などに、ご自由にお使いください。印刷・配布・スライドへの転載のときは、この著作者の表記を残してください。