文字コード#

文字コードはコンピューターに文字 (文字、数字、区切り記号、空白文字などを含む) を理解させるための符号化システム。

代表的な文字コード#

ASCII#

  • 1960年代にアメリカで開発された

  • 7bit, 1byteで表す

  • ASCIIの国際化されたものが ISO/IEC 646

  • ISO/IEC 646は各国語版にカスタマイズしたバージョンがある

  • ISO/IEC 646の日本語版はJIS X 0201として標準化された。ASCIIに比べて「\」が「¥」に、「~」が「ˉ」になっている違いがある。

  • どこの国にも特化してない「国際基準版」もある。ISO/IEC 646 国際基準版 (1991年版)はASCIIと同等

ISO/IEC 2022#

  • 8bit, 2byteで表す

  • マルチバイト文字(2バイトや3バイトで1文字を表す)の導入

JIS X 0208#

  • 1978年に制定された

  • 1文字に複数バイトを使う2バイト符号化文字集合を採用しており、漢字を扱うことができる

Shift_JIS#

  • JIS X0208をJIS X 0201と組み合わせる方式

Unicode#

  • 世界の様々な言語・記号に番号を割り当てた文字コード

  • 当初は16ビット(最大65,536文字)の固定長の予定だったが、世界中の文字・記号を収めるには不十分となり、拡張の必要性が生じた。そこでUTF-16やUTF-8が生まれた。

  • UTF-16:Unicodeの中で文字が割り当てられていない16ビットの符号単位を2つ並べることで拡張する

  • UTF-8:ASCIIとバイト単位で互換となるようにした可変長の符号化方式

  • 公式サイト:Unicode – The World Standard for Text and Emoji

Pythonでの扱い#

Unicode HOWTO — Python 3.12.5 ドキュメント

"\N{GREEK SMALL LETTER BETA}"
'β'
"\N{GREEK SMALL LETTER BETA}".encode("utf-8")
b'\xce\xb2'
"\N{GREEK SMALL LETTER BETA}".encode("shift-jis")
b'\x83\xc0'

参考#

  • 矢野啓介. (2010). プログラマのための文字コード技術入門.