→文字コード関連
文字コード表†
「〜」のUnicde->ShiftJIS変換問題†
- Shift-JISには定義されておらず、Unicodeにしかない文字(通貨記号など)もフォントとしては表示できる
- HTML上では &#xxxxx; のような数値文字参照になっていることがある。
- 文字参照とは - 意味をわかりやすく - IT用語辞典 e-Words 2020
- 数値文字参照 (numeric character reference)
- 表記したい文字を、Unicode/ISO 10646の文字番号(コードポイント)で表す方式で、十進数を用いる場合は「&#番号;」、16進数を用いる場合は「&#x番号;」のように表記する。
- HTMLでは「数値文字参照」(numeric character reference)、XMLでは「文字参照」(character reference)という。
UCS-2/UCS-4†
Unicode(ユニコード)は、ユニコード・コンソーシアムによって制定された文字コードである。文字を2バイト、または4バイトで表し、世界中の文字を表現しようとするもの。Unicodeは、ISO 10646の中で、UCS-2(BMP)として採用されている
- UCSは、Universal multiple-octet coded Character Setの略
- UCSには、2バイト(オクテット)で表すUCS-2と、4バイトで表すUCS-4がある。
- UCS-4では、4バイトを群(Group)、面(Plane)、区(Row)、点(Cell)で表すが、ほとんど使われていない。
- UCS-4の0群0面を基本多言語面(BMP:Basic Multilingual Plane)と呼ぶ。
- UCS-2は、BMPの上位の2バイトを省略した文字コードのこと
Unicode(UCS-2)では、A,I,O,Rの4つの領域に分かれる。
日本語のJIS X 0208およびJIS X 0212は、CJK統合漢字として格納されている。
CJK統合漢字とは、中国(China)、日本(Japan)、韓国(Korea)の似ている漢字を同じ文字コードに割り当てたもの。
領域名 | 文字コード | 内容 |
A領域 | 00-4D | Alphabet領域のことで、アルファベットなどの表意文字を格納する領域 |
I領域 | 4E-9F | Ideograph領域のことで、CJK統合漢字などの表意文字を格納する領域 |
O領域 | A0-DF | Open領域のことで、将来の拡張ための予備領域 0xD7-0xDFは、サロゲート領域で、UCS-4の1面から16面の拡張用 |
R領域 | E0-FF | Restricted領域のことで、PUAなどの限定使用領域。PUAとは、Private Use Areaの略で、外字などを格納する領域のこと |
JavaやXMLは、基本コードとしてUnicodeを採用。今後世の中では、Unicode化が進んでいく予定。
UTF-8の変換規則†
変換後パターン | 変換前 | 変換後 |
1バイトになる場合 | 0000 0000 0aaa bbbb | 0aaa bbbb |
2バイトになる場合 | 0000 0aaa bbbb cccc | 110a aabb 10bb cccc |
3バイトになる場合 | aaaa bbbb cccc dddd | 1110 aaaa 10bb bbcc 10cc dddd |
BOM†
- Byte Order Markの略で、Unicodeファイルのエンコーディング(UTF-8, UTF-16LE, UTF-16BE, UTF-32LE, UTF-32BE) を識別するために使われるマーカー(識別子)。
- Windows環境では、UTF-8、UTF-16LE, 16BE, 32LE, 32BEのいずれもBOM有が標準。
- BOMなしのUTF-8のことをUTF-8nと呼ぶ場合もある。
- ソフトウェアによっては、BOMを別の名称で呼ぶことがある。
- Unicodeサイン(EmEditorでの呼称)
- UTF-8 シグニチャ(Visual Studio .NETでの呼称)
- BOMの具体例
エンコーディング | BOM |
UTF-8 | EF BB BF |
UTF-16LE | FF FE |
UTF-16BE | FE FF |
サロゲート†
- 私の名前ってUnicodeでどう表すの?~異体字セレクタとの出会い~ - NRIネットコムBlog 2024.2
- サロゲートペア入門
- UTF-16 では、UCS-4 の BMP 以外の文字を参照するために、文字二つ分をペアとして使うことがある。
- Shift_JIS などと違って、それ自体は無意味な文字同士を組み合わせる。(「ヘン」と「つくり」の考え方に似ている)
- 組み合わせの前半に使われる文字は前半にだけ、後半に使われる文字は後半にだけ使われるので別の文字と誤認されることはない
- この、別の文字を表現するために定義されている、それ自体意味を持たない文字を「サロゲート」と呼ぶ。
- UCS-4 では、55296〜57343 の文字が「サロゲート」として定義されてる。これによって 1024 × 1024 = 1056768 の文字が表現できることになる。