2007/05/21

<<
UTF-8 Linux、MacとWindowsでの「〜」が気になったので、UTF-8について調べてみた。 Manpage of UTF-8 符号化 以下のバイト列が文字の表現に使用される。どのバイト列を使用するかは文字の UCS コード番号に依存する: 0x00000000 - 0x0000007F: 0xxxxxxx 0x00000080 - 0x000007FF: 110xxxxx 10xxxxxx 0x00000800 - 0x0000FFFF: 1110xxxx 10xxxxxx 10xxxxxx 0x00010000 - 0x001FFFFF: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx 0x00200000 - 0x03FFFFFF: 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 0x04000000 - 0x7FFFFFFF: 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx ということは、1バイト目が 0x00〜0x7F:1バイトのバイト列 0xC0〜0xDF:2バイトのバイト列 0xE0〜0xEF:3バイトのバイト列 0xF0〜0xF7:4バイトのバイト列 0xF8〜0xFB:5バイトのバイト列 0xFC、0xFD:6バイトのバイト列 ということになるようだ。 それから、 UTF-8 - Wikipedia BOMについて UTF-8はエンディアンに関わらず同じ内容になるので、本来はBOM(Byte Order Mark)を付加する必要はないが、一部のエディターなどではBOMの有無を選択できる。この際、BOMありの方をUTF-8、なしの方をUTF-8Nと呼ぶこともあるが、このような使い分けは日本以外ではほとんど知られておらず、また公的規格などによる裏付けもないため、その使用には注意が必要である。 ということなので、エンディアンを気にせずにバイトストリームとして扱えばよいこともわかった。 そして件の「〜」だが、UTF-8のバイト列にすると Windows:0xEF 0xBD 0x9E Mac,Linux:0xE3 0x80 0x9C であることから、"\xE3\x80\x9C" というバイト列を "\xEF\xBD\x9E" に変換すれば、Windowsでも「〜」が表示できるできることを確認した。 勉強になります。

最近のコメント