[2] ''[CODE(charset)[UTF-8]] の [[BOM]] は必須ではありません''。
詳しくは [[BOM]>>9] を参照して下さい。 BOM
必須説は、そういうことにしたい人達が勝手に流した風説です。
- [3] [[Unicode]] 3.0 以降では S-area の符号位置 (の UTF-8 表現) は禁止されています。他方、 [CODE[U+FFFF]] のような non-character (の UTF-8 表現) は禁止されていません。 non character は情報交換を目的としたものではありませんから情報交換用で紛れ込んでいたなら間違いですが、内部処理に使うことが出来るものですから、 [[UTF]] で禁止したら使う意味が無くなるということらしいです。
- [6] [WEAK[2003-11-10 23:49:29 +00:00]] ''[[名無しさん]]'': ついに IETF Full Standard の [[RFC3629]] (= [[STD63]]) がでました。
* Java の UTF
[1] [[Java]] が実装している UTF-8 の変種は、 U+0000 を表現するために
0xC0 0x80 を (0x00 の代わりに) 使います。 (0x00 は Java
では文字列の終端を表し、文字列内には入れられません。)
- [4] このような、「長さが最小ではない表現」は、 UTF-8 では禁止されています。[WEAK[もっとも、各規格は当初そのことを忘れていました。設計者は最初からそのことに注意していたらしいですが、気が抜けていたとかなんとか。]]
- [5] 実際には巷の UTF-8 の decoder は最短じゃない表現を「意図どおりに」解読してしまうことがありますが、それは禁止されています。
[9]
[Q[Java [RUBYB[修正] [modified]] UTF-8]] (昔は Java の世界で [Q[UTF-8]] と呼ばれていたもの。) は >>1 に加えて [[CESU-8]] らしいです。
''Supplementary Characters in the Java Platform''
([[名無しさん]])
[10]
''JNI Types and Data Structures''
* Perl の UTF-8
[12] [[Perl]] の [CODE(perl)@en[[[Encode]]]] [[モジュール]]には「[[utf8]]」と「[[utf-8]]」
があります。「[[utf8]]」は [[UTF-8]] っぽい[[符号化方式]]を使った [[Perl]]
の[[内部コード]]、「[[utf-8]]」は [[Unicode]] の [[UTF-8]] です。
詳しくは [[utf8 (Perl)]] の項をご覧ください。
* Emacs で UTF-8
[11] [[Emacs]] で [[UTF-8]] な[[ファイル]]を開くとなぜか[[漢字]]だけ全部化ける ([[仮名]]とかは化けない)
という時は [[.emacs]] とかにこう書くと直るかもよ:
[PRE(example code)[
(prefer-coding-system 'utf-8-unix)
]PRE]