【文字コード】まとめてみた

Web

さて今回は、文字コードについてです。
文字コードと聞いて、皆さんはどれぐらいピンときているでしょうか。
ちなみに私は把握も何もできていません。

ブラウザで調べ物をしているとき、たまーに文字化けしているサイトがあります。
有識者の方は、ブラウザがIEだったら文字コードを設定で変えてスマートに解決しますが、
私は考える間もなくマウスの『戻る』ボタンを押して、別のサイトを探し始めます。

というわけで、今回は文字コードについてざっくりと話していきます。
詳しいことは別のサイトに任せるとして、このサイトでは大まかな分類が分かればOKです。

文字コードって何やねん

文字コードは、数字に文字を割り振った対応表です。
コンピュータが扱える二進数の数値の並びを使って文字変換しようぜ!ってことですね。
例えば、1111 という数値の並びは 『A』ということにする、1112という数値の並びは『B』ということにする、といったルールを決めているものです。
実際には、この数値の並びは16進数の値になり、この数値と文字が対応することで、文字コードの対応表が出来上がります。
ではそれぞれ種類を見ていきましょう。

文字コードの種類

他にもいろいろあるのですが、とりあえず以下を押さえておけば良いでしょう。

  • JISコード
  • シフトJISコード
  • アスキーコード
  • Unicode

では、それぞれ説明していきましょう。

JISコード

インターネットや電子メールで日本語を表記する際に最も標準的に使用されている文字コード。
日本興業規格(JIS)によって定められた7ビット単位の符号化方式。
特殊な文字や機能(制御文字列)はエスケープシーケンスという特殊な文字の並びによって表現している。

⇒ 日本の偉い人が決めた日本語表記のための標準文字コード

シフト-JISコード

 Microsoft社が決めたコード。エスケープシーケンスは使用されていない。
 半角文字も全角文字も一律2byte(16bit)で扱うので、表示された文字列とbyte数が一致するという特徴がある。

 ⇒ マイクロソフトが決めた日本語向け文字コード。マイクロソフト製品は、Shit-JISコードで扱われる。ExcelとかWordとか

アスキーコード

アメリカ規格協会が制定した文字コードで、1文字を7bitで表現しており、誤り検出用に1bit、計8bitで表現している。
 今は国際標準化機構(ISO)により、国際標準となっている。

 ⇒ アメリカの偉い人が決めた文字コード。今は国際標準になっている。

Unicode

文字化けをなくすために出てきた。
 例えば、Windowsで作成したファイルをメールでUnix/Linux系のコンピュータへ送信したら、意味の分からない文字列になってしまうという事が起きる。
 WindowsはシフトJIS ⇔ UnixやLinuxはEUC-JP(近年はUnicodeのUTF-8)で、文字に起こしたときに、正しく認識できない表示される。いわゆる文字化けというやつ。

 ユニコード・コンソーシアムにより制定された。文字を4byteで表現し、世界中の文字を表現しようとしている。
 ISOで規格化されており、JavaやXMLは基本コードとしてUnicodeを採用している。
 そして、Unicodeで定義されている文字を、実際にデータとして使用する場合には、文字符号化方式(エンコーディング)により符号化して使用する。
 この符号化方式の種類に、UTF-8やUTF-16 がある。
 また、その中のUTF-8は最もポピュラーな変換方式である。UTF-8 はASCIIと互換性がある規格。

 ⇒ 世界は【Unicode】は世界中の文字を表現しようとしている文字コード

世界はUTF-8の規格になりつつある

世界各地であちらこちらで違う文字コードを定義されては、文字化けが起きてしまいます。
そこで、世界中の文字を表現できうるUTF-8に世界は移行してきています。
主にブラウザではUTF-8が採用されています。


しかしながら、UnicodeにはUTF-8とUTF-16がありました。
詳しい説明は以下の参考文献を見ましょう。
(参考:Unicode)
https://www.atmarkit.co.jp/fxml/askxmlexpert/024utf/24utf.html

要約すると、一文字を表現するのに何バイト使うかの違いです。しかしながら、世界標準は【UTF-8】になってきているところが多く、
特にこだわりがないのなら、【UTF-8】にしましょう、ということです。

以下のサイトでも、HTMLの文字コードを定義するタグは【UTF-8】で書きましょうとあります。なぜなら、世界がそれに合わせてきているため、
我々もそれに合わせましょう、という理由です。
(参考)
http://www.ic.daito.ac.jp/~mizutani/html/default_encode.html

ところで…もう一つありますよね?

文字コードとはまた違いますが、URLエンコード(パーセントエンコード)というものもあります。
こちらは、URLエンコードするためのルールの話なのか、実際のエンコードの話なのかは明確にしなければなりません。
この記事では実際にエンコードされる方について説明します。

URLエンコード/デコード

URLエンコードとは、
表現できない文字を別の形に置き換えるための作業です。

また、、バイト列に対してデコードを行うため、先ほど紹介した文字コードによりません。

例えば、日本語は本来URLでは認識されません。よくURLの欄にパーセントが入った文字を見たことはないでしょうか?
これは、認識できない日本語をURLが認識できる形に直しているからです。

この『認識できる形に直す行為が』エンコードになります。
そして、URLに対するエンコードですので、『URLエンコード』になります。
URLエンコードはFormの送信の際に使われますね。

そして、デコードされることで、本来設定した文字が表示・認識されます。

(参考文献)
https://qiita.com/sisisin/items/3efeb9420cf77a48135d
https://wa3.i-3-i.info/word13354.html

スポンサードサーチ

まとめ

・世界はUnicodeで統一に向かっている

・URLエンコードも知っておく

特に、Webプログラマーの方は、URLエンコード・デコードも意識すると良いと思います。いつかハマった際の手助けになるでしょう。
今回は普段あまり意識しづらい文字コードについて取り上げました。
何かで文字化けが生じたときは、ぜひこの記事を思い出して推察していきましょう。