UnicodeとかUTF-8とかShift_JISとか色々複雑なので自メモ
下記の書籍を参考にしてます
この記事内の記述には私の理解不足により誤りがある可能性があるので、こちらの本を読むのがとてもおすすめ
プログラマのための文字コード技術入門 (WEB+DB PRESS plus) (WEB+DB PRESS plusシリーズ)
- 作者: 矢野啓介
- 出版社/メーカー: 技術評論社
- 発売日: 2010/02/18
- メディア: 単行本(ソフトカバー)
- 購入: 33人 クリック: 564回
- この商品を含むブログ (123件) を見る
そもそも文字コードとは
任意の文字を重複無く集めたものを文字集合という
その文字集合とビット組み合わせを対応付けたものを文字コードまたは符号化文字集合という
文字コードは収録している文字の種類・数、ビット組み合わせの桁数などの違いがある
ASCII、JIS X 0208、Unicodeなどが文字コードにあたり、それぞれの特徴は以下の通り
文字コード名 | 説明 | ビット桁数 |
---|---|---|
ASCII | 英数字と一部の記号のみを収録した基礎的な文字コード | 7ビット単位の1バイト |
JIS X 0208 | 日本語で使用される主な文字を収録した文字コード。漢字はJIS第1・第2水準漢字が収録されている | 7ビット単位の2バイト |
Unicode | 全世界の文字の収録を目的とした文字コード。2バイト | 作成当初は16ビットだったが、今は8ビット単位の1〜4バイト |
UTF-8やShift_JISは文字符号化方式
UTF-8やShift_JISなどは上記参考資料では「文字符号化方式」と呼ばれています
文字符号化方式は、文字コードのビット組み合わせに対して、計算などによってビット値を与える
文字コードでもうビット組み合わせが定義されてるんだからそのまま使えばいいじゃん!!!!と思うところだが(実際ASCIIなどは文字コードのビット組み合わせをそのまま使う)、そうも行かない場合がある。その場合とは
などがあるらしい
複数の文字コードを組み合わせて使う場合
たとえばJIS X 0208は英数字も収録された文字コードだが、先発のASCIIとの後方互換を保つためには、1バイトの文字は1バイト、2バイトの文字は2バイトで表現できなければならない
そのためにJIS X 0208とASCIIを同時に使えるように符号化方式が必要になる