WordFes2014で登壇させて貰えるということで、
スライドの資料をもうちょっと強力にしようと文字コードについて調べていてたら
迷宮に迷い込んだので、調べたことをメモっていきます。
割と走り書きなので、結構違うとこあるかもしれませんが、
生暖かく教えていただけると嬉しいです。
INDEX
文字コードについて
PCは文字を認識することができないので、
文字コードというコードに置き換えて
最終的に二進数に置き換えらてコンピュータで処理されます。
最初はメーカー間で文字コードの取り決めが決まっていたので、
通信した際に文字化けしていました。
なので、文字コードを統一しようという流れになりました。
これで一件落着に見えたのですが、
今度はインターネットが普及するにつれて、
外国と通信することになると今度は言語が違ったりして
文字化けがおこるようになりました。
さらに、今でもこれは完全には解消されていません。
文字コードとは
文字コードとの対応規則をまとめたものです。
パソコンにある合言葉を言うと「あ」を示すような感じです。
文字コードセットとは
どんな文字をどれくらい扱うのかを取り決めたものです。
例えば日本語なら、「ひらがな」と「漢字」ですが、
ひらがなは50個で済みますけど、漢字だと一杯ありすぎて
どの範囲まで扱えば良いか分かりません。
なので、常用漢字を漢字とするといった取り決めが必要になります。
こういった取り決めを元に揃えた文字に対応させた数値を
表の様に表したものが文字コードセットです。
取り決めを元に集めた文字の事を(文字集合)と言い
それに数値を割り当てたものを(符号化文字集合)と言います。
符号化
文字集合に対しての数字が
日本語コードの場合そのまま使われることはほぼ無くて
目的や処理に応じて使う事が多いです。
この際にデータに応じた形式に変換するのですが、
これを符号化と言います。符号化はエンコードとも言います。
ASCIIみたいに半角英数と基本的な記号しかない文字コードであれば
符号化せずに扱う事ができます。
符号化の方式
日本語の符号化方式には「Shift_JIS」「EUC-JP」「UTF-8」等があります。
これは文字コードセットの数値を何に対応させるか決めたものです。
同じ文字コードセットであっても、符号化形式によって異なる形式に符号化されます。
文字化け
符号化は文字コードによって変わるので、
文字コードによって変わります。文字コードA用に符号化されたビット列を
文字コードBが参照した時に文字化けがおきます。
Unicode
今はHP見ててもCharsetがUTF-8が一般的であるように、
Unicodeが符号化方式として採用されるケースが多い様に思います。
なのでUnicodeが何かだけ覚えておきたいと思います。
unicodeの符号化方式は、
山といえば、U+5C71ですが、
符号位置の整数値0x5C71を
UTF-16で符号化すると5C71と2バイトになります。
UTF-8で符号化するとE5B1B1という3バイトになります。
このように、整数値の符号位置を符号化形式によって
バイト列に符号化することができます。
おわり
読んだ記事を自分に分かるように書きましたが、今分かってても
あさってくらいに見たら全然分からなくなりそうです。
どうもお付き合い頂きありがとうございました。
参考サイト
UnicodeとUTF-8とUCS-2の関係 ――符号化文字集合? 文字符号化方式?(WEB+DB PRESS plus様)
参照先の方が正確だし分かりやすいかもしれません。
もし気になってる方が居たらぜひ。