[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: decode-coding-regin() with utf-8
In article <20050314.191333.218408748.shirai.hideyuki@rdmg.mgcs.mei.co.jp>, Hideyuki SHIRAI (白井秀行) <shirai@meadowy.org> writes:
> いつからかはわかりませんが、最近の Emacs CVS Head の CJK モード
> を使って、utf-8 (や utf-16) を扱う場合、Emacs 立ち上げ後、最初に
> utf-8 を使うときに subst-jis などをロードしますが、そのときの関
> 数が decode-codeing-region() だと decode 結果が化けるようです。
[...]
> (let ((file (expand-file-name "/tmp/utf8.txt"))
> (buf1 (get-buffer-create "*tmp1*"))
> (coding-system-for-read 'raw-text))
> (pop-to-buffer buf1)
> (erase-buffer)
> (insert-file-contents file)
> (set-buffer-multibyte nil)
> (decode-coding-region (point-min) (point-max) 'utf-8)
> (set-buffer-multibyte t))
> を動かすと、「朝×××社」のように化けます。
(set-buffer-multibyte nil) が原因です。 utf-8 は
post-read-conversion 関数を使いますが、これは unibyte-buffer
ではうまく動きません。(set-buffer-multibyte nil) しなくては
ならない理由はなんでしょうか?
−− 半田@AIST
handa@m17n.org