ブログ - Morisawa DTP Lab

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

カテゴリ:文字・組版

こんにちは。文字組ツメ太郎と申します。

今回ブログ初登場となりますが、心のへぇボタンをたくさん押してもらえる記事を書いていきたいと思います。よろしくお願いします。 

 

 

さて皆さん、日常で「不意を突かれる瞬間」ってありませんか?

ボーッと歩いていたら先輩に肩を叩かれた、誰もいないと思って鼻歌をうたいながら乗り込んだエレベーターに人がいた……など、突然のことにドキッとする、なんてことありますよね。

かく言う私も、最近不意にドキッとした瞬間がありました。

 

いつも通りInDesignを開いて、テキストデータをインポートしていたら……

急に目の前が異世界に

そう、文字化けです。

テキストデータを開いたら、ウインドウ一面に心当たりのない文字列がビッシリ。中途半端に読めたり読めなかったりするのが、異世界感というか不気味な感じがありますよね。「糸」へんに「雲」の漢字なんて、文字化けでしか目にしないですし……
(ちなみに:繧は日本で作られた漢字「国字」であり、「繧繝(うんげん)」という熟語などで使われるようです。1へぇ!)

文字化けだ、と瞬時に分かりはするものの、突然の異世界画面に思わずドキッとしてしまいます。

 

……話がそれましたが、今回はこの文字化けについてちょっと詳しくなろうということで、記事を書かせていただきます。

 

文字化けの画面を見ると「データが壊れてしまったか?」と不安になる方もいると思いますが、原因と対策が分かればそう怖い現象ではありません。

 

この現象を紐解くキーワードは、「文字コード」です。

■ 文字コードとは?

文字コードとは、ざっくり言うと「文字の背番号」みたいなものです。

 

前提として、PCはひらがなや漢字を理解しているわけではありません。
PCが理解できる言葉は数字だけです。

PC上でひらがなや漢字などを扱うためには、文字に番号を振って対応させる必要があります。

 

例えば「あ」という文字をPCで表示させたいとき、我々はキーボードで「あ」のキーを押しますが、PC内部では「1番の文字を入力する」という形ですべて数字で処理されているのです。

 

その文字と数字の対応を決めているのが「文字コード」です。

■ 文字コードの種類

ASCII、EUC-JPなど、文字コードにはさまざまな種類がありますが、日本でよく使われる文字コードは主に2種類です。

 

1.Shift_JIS

こちらは日本語に特化した文字コードです。(おなじみJISマークのJISです!)
もちろんアルファベットや数字などの主要な文字はShift_JISに含まれていますが、メジャーでない外国語の文字(ウムラウト付きのäなど)や複雑な記号などは含まれていません。

こうした文字がテキストデータに入っていると、Shift_JISで保存する時「?」に置き換わってしまうこともしばしばあります。

 

2.Unicode

Shift_JISが日本なら、こちらは世界の文字コードと言えます。


Unicodeは、世界中の文字すべてを網羅する(ことを目標にした)文字コードです。現在使われている文字はもちろん、歴史上で使われていた文字も登録されています。古文の授業で出てくる「変体仮名」などもUnicodeに含まれており、それぞれ番号が決められています!

 

年々登録文字数が増えていて、昨年は令和の合字「㋿」も登録されました。
(合字とは:複数の文字を1文字に合成した文字のことです。)

現在14万文字ほど登録されています。

 

Unicodeの制定団体(Unicodeコンソーシアム)が公式運営しているサイトがありますので、ご興味のある方は是非ご覧ください。

 

……さて、この文字コードがどう文字化けに関わるかというと、このShift_JISとUnicode、厄介なことに互換性がありません

それぞれで数字の振り方が違うんですね。

 

Shift-JISで保存したテキストデータをUnicodeで再度開こうとすると、番号に紐づいた文字がそれぞれ違うので、照合する時に違う文字を持ってきてしまいます。

 

スポーツ選手の背番号で例えるならば……
野球選手のイチローが、マリナーズに所属していた時の背番号は「51」ですが、ヤンキースにいた時代は「31」であり、ヤンキースで「51」となるとイチローではなく他の人の事を指してしまう……といった具合ですね。(2へぇ!)

 

この「番号に紐づいた文字が違う」という状態、これがすなわち「文字化け」に当たります。

 

■ データ形式としての種類

Shift_JISやUnicodeと言っても実際にデータとして取り込まれるにあたっては、いくつか形式の種類があります。この形式の違いでも文字化けが起こるケースがありますので、要チェックです。

特にUnicodeは形式指定の枝分かれが多いので、以下にて少し説明します。

 

UTF-〇〇(UTF-8、UTF-16など)
これはざっくり言うと、Unicodeを「ソフトウェア内で処理しやすいように、数字の表記方法を変換した形式」です。
Unicodeで割り振られた数字を何bitで表現するか、によって〇〇に入る数字が違います。

ソフトウェアによって適した形式は異なりますが、概ねUTF-8が主流とされています。

 

BE、LE(Big Endian、Little Endian)
UTF-〇〇にしたときの、数字の表記方法です。
こちらも、用途や読み込ませるソフトウェアによって適した形式は異なります。

 

BOM
これは爆弾……ではなく、バイトオーダーマーク(Byte Order Mark)の略です。
「この文書はUTF-8のBEです」というように、文書の形式を判別するために使う情報です。テキストデータを保存する時にBOMあり・なしを選んでおくことで、開くときにソフトウェアが自動的に判別しやすくなります。

BOMも付けておけば万全、というわけではありません。ある用途ではこのBOM自体が文字化けの原因になったりすることもあるので、実際のところ「どこに使うのか」によります。

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

 

知れば知るほどよくわからん!という方もいると思います。実際、文字コードはさまざまな変遷ののちに確立されてきたものであり、知れば知るほど深みにはまる「沼」なのは間違いありません。(筆者も把握するのにかなり苦労しました……)

 

まあ、まずは第一歩として「Unicodeの中にも種類があるんだな」ということだけでも認識しておくことが大事です。

■ ということで……

文字化けの原因は主に、テキストを「作成した時」と「開いたとき」で文字コードが違うと起こる、と結論付けられます。

 

これをふまえて、文字化けが発生した場合にどのような対処をするかですが
テキストを読み込む時の文字コード設定を変更して、再度読み込んでみてください。

 

例えばInDesignの場合、テキスト配置をするときに「読込オプションを表示」にチェックを入れておくと、文字コードを変更できる詳細設定画面が出てきます。

InDesignCC2020の画面

前述の通り、Shift_JISで作成したテキストをUTF-8などで開いてしまうと文字化けが起こりますので、作成時の文字コードを指定して読み込むようにしましょう!

 

なお、テキストエディタなどのアプリでは文字コード設定が「自動選択」になっていることが多いです。自動選択でうまくいかない場合は、文字コードを指定して再度試してみてください。

 

 

あくまでも今回はざっくりとした説明になっていますので、文字コードに興味がわいた!という方はぜひご自身でも調べてみてくださいね!

ようこそ文字コードの世界へ!!!

 

それではまた次回!

≪前の記事          次の記事≫