いつになっても charset や coding system がわからない山岡です。^^;;
Gnus のバグリポートを受ける news://news.gnus.org/gnus.gnus-bug
という場所 (ニュースサーバ news.gnus.org の gnus.gnus-bug グルー
プ (の記事番号 54237, 54238, 54245, 54246, 54249, 54250)) で見か
けた記事について。要約すると、
1. Content-Type: text/plain; charset="unicode" という記事があっ
た。Gnus はこれを utf-16 として扱わなければいけないのではない
か?
2. その記事を forward したら化けてしまった。それも問題。
(化けてしまったのは、その記事を Gnus が適当に判断した方法で
decode+encode を行なったかららしく、無変換で forward するのは
いちおう大丈夫。)
3. 簡単なテストをしてみると、Emacs 21.3.50 と 22.0.0 ともに
utf-16 という coding system は使えないように見える。(しかし
Simon Josefsson は使えるように見える、と。)
さて、質問なのですが、charset="unicode" が utf-16 と同義だという
のは本当ですか?
それから、utf-16 で ascii テキストをエンコードすると、頭に
\376\377 というものが付加されます。
(encode-coding-string "Hi All,\r\n" 'utf-16)
"\376\377^@H^@i^@ ^@A^@l^@l^@,^@^M^@
"
これは BOM (byte-order-mark) というものだそうですが、utf-16 はデ
フォルトでは utf-16-be (big endian) と同じなのですか? XEmacs
21.5 で同じことを行なっても付加されません。また、
(decode-coding-string
(encode-coding-string "Hi All,\r\n" 'utf-16)
'utf-16)
ということを行なうと、ある条件 (例えば -q で起動した Emacs) では
正しく "Hi All,\n" を返すのですが、いつも使っている Emacs の環境
では以下のようなエラーになってしまいます。Emacs -q との違いが何
なのか、今のところわかりません。
Debugger entered--Lisp error: (wrong-type-argument number-or-marker-p nil)
mule-utf-16-post-read-conversion(9)
decode-coding-string("..." utf-16)
最後に問題になった記事のボディだけを添付しますが、これを utf-16
でデコードすると、何やら漢字のような文字が現れます。これは単に元
の記事が壊れているということなのでしょうか?
Attachment:
utf-16.txt.gz
Description: Binary data