見出し画像

データを開いただけなのに… 文字化けってどうして起こるの?

みなさんこんにちは。
印刷・DTP・Web・UDなどを題材にした「制作まわりのお役立ち情報」、今回は「文字化け」に着目し、原因や簡単な構造について解説していきます。

日頃お仕事をしていて、他の人からもらったデータを開いたりすると稀に「文字化け」が起こることはないですか?

受け取ったデータを開いただけなのに……。

画面を見た瞬間ギョッとしますよね。
そんな文字化けの世界をのぞいてみましょう。


主な文字化けの原因

文字化けは主にテキストデータを「作成した時」と「開いた時」で文字コードが違う場合に起こります。
「文字コード」とは『文字の背番号』のようなもので、文字1つずつに番号が振られています。
コンピューターは文字を見た目の形では理解していません。コンピューター上で文字を表示させるには文字の背番号を呼び出してくる必要があります。

コンピューター上で⽂字を表現する例え

文字コード

文字コードは、厳密には「符号化文字集合」や後出する「文字符号化方式」を指します。
文章などを作る文字を集め、1文字ごとに番号を付けて管理しています。ただ言葉としては「文字コード」としたほうが言いやすいので、そのように言われています。

文字コードの種類は実はたくさんあります。代表的な種類が「JIS X 0208」Unicodeで、他にも「ASCIIアスキー コード」や「EUC」などがあります。

「JIS X 0208」は「JIS」と付くだけあり、日本で制定された文字コードです。(Japanese Industrial Standards:日本産業規格。以前は日本工業規格という名称。)
「Unicode」は世界中の文字すべてを網羅することを目指した文字コードです。現在使われている文字はもちろん、歴史上で使われていた文字も登録されています。
徐々に登録文字数が増えていて、令和の合字「㋿」も登録されました。
(合字とは:複数の文字を1文字に合成した文字のこと。)
2023年現在では世界中の文字が約14万文字登録されています。

文字符号化方式

文字コードを呼び出してコンピューターで表示するのに必要なのが「文字符号化方式」です。
文字符号化⽅式は文字コードを変換(計算)してコンピューターで処理できるようにします。
「JIS X 0208」の文字符号化方式には「Shift_JIS」、「Unicode」の文字符号化方式には「UTF-8」、「UTF-16」などがあります。
文字符号化方式で文字コードをコンピューター上で表示させることを「エンコーディング」と言います。
例外としてASCIIコードは「文字コード」と「文字符号化方式」が同じなのでエンコーディングを意識する必要はありません。

文字コードを文字符号化方式で変換してコンピューターに表示

Unicodeの符号化方式

Unicodeの符号化方式について一部ご紹介します。

UTF-〇〇(UTF-8、UTF-16、UTF-32)

先に触れたようにUnicodeを「コンピューター内で処理しやすいように、数字の表記方法を変換した形式」のことです。
Unicodeで割り振られた数字を何bitで表現するか、によって〇〇に入る数字が違います。
ソフトウェアによって適した形式は異なりますが、概ねUTF-8が主流とされています。

BE、LE(Big Endian、Little Endian)

UTF-16やUTF-32にしたときの、数字の表記方法です。
メモリ上に並べる順序の種類で、上位側から並べる順序をBE、下位側から並べる順序をLEといいます。こちらも、用途や読み込ませるソフトウェアによって適した形式は異なります。
「UTF-16BE」や「UTF-16LE」と表記します。
Windowsのメモ帳の保存では、UTF-16LEとUTF-16BEがあります。
実例はそれほど多くはないのですが、ME(Middle Endian)も存在します。

Windowsのメモ帳の保存画面

BOM(Byte Order Mark)

「この文書はUTF-8のBEです」というように、文書の形式を判別するために使う情報です。テキストデータを保存する時にBOMあり・なしを選んでおくことで、開くときにソフトウェアが自動的に判別しやすくなります。
BOMも付けておけば万全、というわけではありません。ある用途ではこのBOM自体が文字化けの原因になったりすることもあるので、実際のところ「どこに使うのか」によります。

以上のように、Unicodeと一口に言っても細かい形式の違いがあります。

知れば知るほどよくわからなくなる……沼に入っていきます。
なぜなら文字コードはコンピューターが誕生した時には統一されておらず、さまざまな種類の文字コードを作って使われてきました。そのため、文字コード同士で原則互換性がありません
現在はさまざまな変遷を経て随分整理されてきた方ですが、それでも文字コードの種類がたくさんあるため、文字化けが発生することがあります。

今でも頻出する文字化け

今ではソフトが自動認識することが増え、文字化けに遭遇することもかなり減ってきました。
しかし、減ってきたとはいえ文字化けの事例では「MacでZIP圧縮したデータをWindowsで受け取って解凍したら文字化けする」というケースをよく耳にします。

MacでZIP圧縮したデータをWindowsで解凍したら…

それも結局は「エンコード」の違いがあるためです。
特にデザイナーをされている方はMacの使用率が高いのではと思います。その他にも環境依存文字、丸囲みの数字「①」や省略文字「㈱」などを使っていると文字化けは起こります。

自身の環境が周りの環境と同一とは限らないので、相手の環境がどうであるか配慮することも大切ですね。

コンピューターは欧文圏で開発されてきました。そのためファイル名やフォルダ名、他にはコンピューター名やプリンター名などには半角英数字を使うようにすると文字化けを回避できます。
また、受け取り側の方で文字化けをしないように解凍してくれるソフトを用意しておくのもいいですね。

文字化けをした時の対処

前述のファイル名などではなく、データ内で文字化けが発生した場合にどのような対処をするかを知っておくと慌てなくてすみます。
文字化けが発生した際はテキストを読み込む時の文字コード設定を変更して再度読み込んでみてください。
例えばInDesignの場合、テキスト配置をするときに「読み込みオプションを表示」にチェックを入れておくと、文字コードを変更できる詳細設定画面が出てきます。

InDesignの画⾯

Shift_JISで変換すべきテキストをUTF-8などで開いてしまうと文字化けが起こりますので、作成時の文字コードを指定して読み込むようにしましょう!
なお、テキストエディタなどのアプリでは文字コード設定が「自動選択」になっていることが多いです。自動選択でうまくいかない場合は、文字コードを指定して再度試してみてください。

ただ、コード情報が正しく書かれていない場合にはこの方法で対応できないことがあります。どのコードで保存されているのかはなかなか判断がつかないことや、自動選択による判別も絶対ではなかったりします。
そのため、元データを作った人がわかっているのであれば、どのような方法で作成や保存をしたのか、尋ねてみることも解決方法のひとつになります。



文字化けについて構造を理解し、そして対処法を知っていると慌てずにお仕事が進められますね。
文字化けはテキストデータを「作成した時」「開いた時」の文字コードが違う時に起こるので、関係各所とのファイルのやり取りがある場合には気をつけておくと良いですね。

それではまた次回の記事もお楽しみに!