[Date Prev][Date Next][Thread Prev][][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