みなさん、おはようございます!タカハシ(@ntakahashi0505)です。
こちらの記事は、タカハシが音声メディアVoicyの「スキルアップラジオ」にて放送した内容から、ピックアップしてお届けします!
今回のテーマは、今さら聞いてもいいIT用語: 「文字化け」です。
なお、以下で実際にお聴きいただくこともできます!
では、よろしくお願いいたします!
「文字化け」とはどんな状態か
今日紹介したいIT用語は「文字化け」です。
おそらくキーワードを聞いて、リスナーさんとしては、もしかしたらこんな状況かも、みたいなのを想像されてる方も多いんじゃないかなと思います。
そうなんです。日本語を表示したつもりなんだけれども、わけがわからない変な文字に変換されちゃってる、そんな状態のことを「文字化け」と言います。
例えば、ダイヤの中にはてながあったりとか、縦長の四角がずらっと並んでいたりとか、あと、糸へんにれんみたいな、絶対使ったことないような漢字が並んでいたりとか、あとそれにパピプペポのあれですね、半濁点の記号がついちゃってたりとか、小さいカタカナがついちゃってたりとかそんな謎の暗号の文字列みたいな感じになっちゃってると。
それが「文字化け」という状態です。
言葉の意味としては以上なんですけれども、これが何で起きるのかっていうのを知ることで、皆さんがコンピューターの気持ちをちょっと理解するのに役立つかなと思いますので、これが起きてしまう理由について、今日は細かくお話をしていきたいと思っています。
人間とコンピューターの言葉の変換ルール
我々人間は、コンピューターさんとタッグを組んで、日々お仕事をしてるわけです。
ただ、コンピューターさんが理解できてる言葉っていうのは、実は0と1、この羅列しか理解できていないんです。
一方で、僕らが普段使っている言葉、日本人であれば日本語なんですけれども、そこで使われてる文字の種類っていうのは、0とか1とかそれだけでは当然なくてですね、ひらがな、カタカナ、漢字、記号、アルファベット、数字、様々な文字が使われているわけです。
なので、例えば、僕らが文章を作る時、キーボード操作をして文字を入力していくわけなんですけれども、それがコンピューターに保存される時、そのままだとコンピューターさんは理解できませんので、0と1の羅列に変換して保存するんです。
この時に一定のルールが存在しています。
例えば、ひらがなの「あ」という文字であれば、まあ適当ですけど0011とか、「い」というひらがなであれば0100とかです。
そんな感じで、我々が使っている全ての文字と0と1の文字列羅列の変換を行ってるわけです。
その変換表というのがルールとして存在していて、その変換表にのっとって、0と1の羅列に全部変換した後に保存すると、このような変換作業が行われているんです。
この時に使う変換表、変換のルールを定めた変換表を文字コードと言います。
人間の文字からコンピューターの言葉へエンコード
この変換表、文字コードを使って、人間の使う文字をコンピューターの01の羅列に変換することをエンコードというんです。
このエンコードという言葉のエンですけれどもこれはアルファベットで言うとenという接頭辞なんです。
これは、「ほにゃららにする」という意味があるんです。
なので、「コードにする」という意味です。
コードに変換するこの作業をエンコードというわけです。
ここまでよろしいですかね。
我々が普段使っている文字をコンピューターがわかる01の文字の羅列に変換すること、これをエンコードと言います。
そしてその時に使える変換表を文字コードというわけです。
コンピューターの言葉から人間の言葉へデコード
さて、今度はですね、コンピューターさんが保存してくれた01のファイルがあるわけです。
これ、いざ読もうと思ってファイルを開くわけなんですけれども、そのままコンピューターの言葉で表示すると、ただ0と1の羅列になっちゃうので、我々はそれは何て書いてあるかわかんない、まあそういう状態なわけです。
そこで、この0と1の羅列で保存されていたものを、また元使っていた変換表、つまり文字コードに従って僕らが使う文字に変換して戻す作業をするわけです。
この元に戻す変換作業のことをデコードと言います。
このデコードで使われるdeの部分ですね、アルファベットde、これは「離れて」という意味があります。
つまりコードから離れる、そして人間の文字に戻す、こういったイメージです。
つまりコンピューターさんの言葉である01の文字の羅列を我々人間がわかる文字の羅列に変換して戻す作業をデコードと言います。
この時に使う変換表も元々使った文字コードを使うわけです。
さて、ここまでは皆さんよろしいでしょうか。
「文字化け」はなぜ起こるか
我々がテキスト文章などをテキストを打った時に保存して、それを開いてもう1回見る、その時にこのエンコードとかデコードとかが行われているわけなんですけども、この作業が行われているという事実をベースに、なぜ文字化けが起きるのかを解き明かしていきたいと思います。
この文字化けの原因となる厄介な事実が一つあるんですけども、それが何かと言いますと、非常に厄介なことに、文字コードというのは世界共通で一つだけというわけではないということなんです。
つまり、あるケースで用いられている文字コードと別のケースで用いられている文字コードが違う時があるって事なんです。
文字コードが違うとどうなるか
具体的に言うと、一般的にWebの世界で使われている文字コードは、UTF-8と呼ばれるものが使われています。
また、MacOSですね皆さんがマックを使ってる時も、UTF-8という文字コードが使われています。
しかし、ビジネスパーソン御用達のWindowsでは、シフトJISと呼ばれる文字コードが採用されてしまっているんです。
例えば、インターネットで入手したファイルが文字コードとしてUTF-8が使われてエンコードされているわけです。
しかしWindowsマシンでダウンロードして、それを開こうとすると、シフトJISの文字コードでデコードしようとします。
この時にエンコードした文字コードとデコードした文字コード別々のものになっちゃってますから、ここで別の文字が割り当てられて文字化けが発生してしまうんです。
例えば、適当ですが、ひらがなのあという文字がUTF-8で言えば0011だったとします。
しかしシフトJISで言うと、その0011っていうのはてんで我々が使わないようなマニアックな漢字が割り当てられちゃってるとします。
そうすると、エンコードされたものが正しくデコードされずに、そのマニアックの文字が表示されてしまっているということなんです。
これが「文字化け」という現象が起きてしまうメカニズムになっています。
「文字化け」が起きても慌てないで文字コードを選択
もう1回まとめてみますと、まずは、我々が使っている文字とコンピューターが理解してる文字っていうのは違うわけです。
で、我々が使っている文字からコンピュータがわかる01の羅列に変換する作業をエンコードと言います。
その時に使われている変換表これを文字コードというわけです。
逆に、コンピューターが理解できる01の羅列を我々が理解できる文字に変換する作業はデコードといい、やっかいなことに文字コードは唯一ではなくて、何種類かあります。
エンコードした時の文字コードとデコードする時の文字コードが違っちゃってるとわけのわかんない文字列に変換されてしまう、これが文字化けが発生してしまう理由ということになります。
どうでしょうかリスナーの皆さん、コンピューターの気持ち少し理解できましたでしょうか。
これ対処法なんですけれども、ファイルを開く、つまりデコードをする時にエンコードされた時と同じ文字コードを使って開くことが基本の対処法になります。
なので、文字化けが起きちゃった時は、慌てず騒がず、文字コードを選択して開けるかどうか、これを確認していただければと思います。
さて、ここからちょっと余談です。
基本的には起きて欲しくない文字化けなんですけれども、この文字化けをいつでも気軽に味わうことができる文字化けテスターというツールがあります。
意図的に文字化けを起こすのはそんなに簡単じゃないんですけれど、このツールさえ使えば、いつでも文字化け気分を味わえますので、是非遊んでみていただければと思います。
まとめ
ということで、今日はVoicy「スキルアップラジオ」の放送から「今さら聞いてもいいIT用語: 「文字化け」」をお届けしました。
これを聞いていただいたリスナーさんは、もう文字化けが起きてもなんか超嫌なことが起きたみたいな感じじゃなくて、なるほど、エンコードの時とデコードの時の文字コードが違うのね、こんな感じで捉えていただけて、びっくりしなくて済むんじゃないかなと思います。
あと補足ですけど、今回、結構新しいワードがバンバン出てきたかと思うんですけど、全部が全部をきっちり理解していただく必要はないかなと思ってまして、なんとなく耳慣れしていただく、聞き慣れていただくというのが大事かなって思ってます。
今度、その言葉に出会った時に、ちょっと抵抗感が下がってたりとか、そういったことが実現できていれば、それで十分かなと思います。
引き続き、この「今さら聞いてもいいIT用語」は、そんなスタンスで楽しんでいただければと思います。
タカハシのVoicyの放送はこちらからお聴きいただけます。
チャンネルのフォロー、コメント、SNSでのシェアなどなど、楽しみにお待ちしております。
では、また。