tech-memo

文字のこと 主に日本語の取り扱い、歴史

以下はwaybackにしかない良記事のまとめ

他の参考:

ASCII

つまり、7ビットで完結

0x5C: バックスラッシュ、0x7C: 縦棒、0x7E: チルダ などは昔々はベンダや地域ごとに違っていた。いまでも5Cは日本のwindowsでは\マークになっている

7Eはパンチカードで全ビットが1で全削除を表すことの名残りらしい

JISコード

ASCIIに加えて、

2121~7E7E→JIS規格の例えばJIS X 0208 の[本体009」「附属書6(規定)漢字の分類及び配列」に含まれる16区1点~84区6点の、亜: 3021のことを言う。

”補助漢字”の定義、JIS X 0208, 0212, 0213など規格の詳細は後述。

Shift-JIS(MS漢字コード)

マイクロソフトなど数社が策定した漢字コード

ASCII、半角カナはJISと同じ。

漢字は、 0x8140~0x9FFC(第一バイト: 0x81~0x9F、第二バイト: 0x40~0x7E)
0xE040~0xFCFC(第一バイト: 0xE0~0xFC、第二バイト: 0x80~0xFC)

所定の計算式によりJISコードを変換している。

EUC(日本語EUC)

Extended Unix Codeの略。日本語の他に、中国語EUC、韓国語EUCなどがある。

制御文字、英数はASCIIと同じ。

漢字のA1A1~はJISと同じ順番で振っているので変換が簡単。

JIS規格、JIS漢字

ISO 2022(ISO/IEC 2022)

Unicode(UCS)

漢字領域は、中国・韓国・日本で同定して格納されているため、コードだけではJISと互換がない(並びがバラバラという意味で)。なので、Shift_JIS-2004 (JIS X 0213:2004) vs Unicode mapping tableのような対応表がある。

UTF-16 -> UTF-8への変換

「あ」: 3042:
00110000 01000010

11100011 10000001 10000010

太字が固定値で、その後ろにUTF-16のコードポイントを並べる(つまり、8桁8桁を、固定値を入れつつ4桁6桁6桁に分解して3バイトにする。