[改訂新版]プログラマのための文字コード技術入門 (WEB+DB PRESS plusシリーズ)などを読みつつざっくり備忘録
〜
で「なんとなく似ているかそれ以上」くらいのニュアンス。=
で「まぁ同じかそれ以上」くらいのニュアンス。
ASCIIとかLatin-1周辺
- ASCII 〜 ISO/IEC 646 〜 JIS X 0201(Latin)
- ISO/IEC 8859-1 = Latin-1
・但し、JIS X 0201ではJIS X 0201 - Wikipediaのように「片仮名図形文字集合」がある。
・JIS X 0201 - Wikipediaより「ASCIIと比較すると2文字が異なっており、92番の文字にバックスラッシュ ('\') の替わりに円記号 ('¥') が、126番にチルダ ('~') の替わりにオーバーライン ('‾') が割り当てられている。」にも注意。
JIS X 0208とかJIS X 0213周辺
- JIS X 0208: JIS第1水準, 第2水準
・JIS0208.TXTの593行目などを見ると、「愛」(U+611B)のJIS区点コードが0x3026となっていて、更にShift_JISのコードとしては0x88A4であることが分かる。
・JIS X 0208-1983からJIS X 0208-1990への改正で「凜」(U+51DC)が増えており、これは84区5点(JIS X 0213では1面84区5点)にある。Shift_JISのコードとしては0xEAA3のようである。
- JIS X 0201+JIS X 0208 〜 Shift_JIS 〜 CP932=MS932=Windows-31J*2 〜 MacJapanese*3
- SHIFTJIS.TXT
- CP932.TXT
- JAPANESE.TXT(たぶんMacJapanese)
・Shift_JISはJIS X 0201の8bitコードを拡張したもの。
・CP932.TXTでShift_JISのコード0x88A4のところを見ると、U+611Bであることが分かる。
・IBM & NEC統合の過程でJIS X 0208-1990を採用したようだ。
・MacJapanese - Wikipediaによると、全角文字部分はJIS X 0208-1990を基にしているということで90pv-RKSJ-Hが近いんじゃないかな・・・とは思う。MacJapaneseのコードとして0x8540は「Apple標準システム外字」としての「丸付きの数字1」のようであり、Adobe-Japan1規格からすればCID+7555が相当すると思われる。とすれば、90pv-RKSJ-Hが妥当な写像を提供している一方で、83pv-RKSJ-HではCID+232の半角幅の!
に写してしまっておりよく分からない。という意味ではやはり90pv-RKSJ-HのほうがMacJapaneseに正しく対応しているのでは?と思うが、結構83pv-RKSJ-Hも使われているような気もする。CID-Keyedフォント|千都NEWSダイジェスト|ヒラギノサポートに書いてあるようなアプリケーションの互換性に起因するのかもしれない。また、83pv-RKSJ-HがJIS X 0208-1983を基にしているならJIS X0208-1990で追加された「凜」(U+51DC)が抜け落ちていても不思議ではないのだが、0xEAA3からCID+8284への写像が定義されており、実はなんだかんだでJIS X0208-1990の情報も考慮されていそうでますますよく分からない。
- JIS X 2012: 補助漢字。JIS X 0208を補完。
・Shift_JISと組み合わせられないのでイマイチ普及せず。→ JIS X 0213
- JIS X 0213: JIS X 0208の拡張(スーパーセット)。JIS第3水準, 第4水準。JIS X 0213:2000 → JIS X 0213:2004*4 → JIS X 0213:2012 で改正。
- 改定常用漢字表
Unicode
- Unicode = ISO/IEC 10646 = JIS X 0221
・重要なASCIIに対応するISO/IEC 646の頭に10を補った感じで覚えやすい。*6
・Unicode - Wikipediaにあるように、サロゲートペアの表現の上限が0x10FFFFなので、群00面17までのコードポイント以外は削られたらしい。
・これらのマトリクスは区(row)が縦方向、点(cell)が横方向なのでなんかシックリこない・・・。
・変体仮名を打ちたいならこれ: Unicode変体仮名フォント
符号化方式
JIS X 0208の符号化方式
・GLに呼び出す場合には、図形文字に用いるコード範囲がSP
(0x20)の後ろの0x21からなので、区点コードに0x20を加える。GRに呼び出す場合にはbit8を立てる(=0x80を加える)が加わるので、0xA0(=0x20+0x80)を加える。
- EUC-JP 〜 GL:ASCII + GR:JIS X 0208
- ISO-2022-JP 〜 GL:{ASCII, JIS X 0208}
- Shift_JIS 〜 GL/GR:JIS X 0201 + JIS X 0208
・電子メールの符号化については、ISO-2022-JPが歴史的によく使われていたが、ISO-2022-JPはJIS X 0201片仮名集合を含まないので半角片仮名に対応するコードが使えないっぽい?MIMEエンコードされたメールのデコード方法 - Qiitaや日本語のe-mail、ISO-2022-JP以外のcharsetを使うのは是か非か | スラド ITも踏まえつつ、きっと現在はほぼUTF-8だろう・・・と信じたいところ・・・。(と思ったが、届いたメールのヘッダを見た感じだと1/3くらいはISO-2022-JPのように見えた・・・)