[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: decode-coding-regin() with utf-8
白井です。昔を思い出しながら試してみました。
From: Katsumi Yamaoka <yamaoka@xxxxxxx> さん曰く
Subject: [emacs-w3m:08532] Re: decode-coding-regin() with utf-8
Message-ID: <b4m3bi4knrk.fsf@xxxxxxx>
Date: Tue, 28 Feb 2006 15:20:31 +0900
>
> http://news.gmane.org/group/gmane.emacs.w3m/thread=5249/force_load=t
>
> から始まるスレッドにつなげます。最初の白井さんの記事を要約すると、
>
> テキストを何かの coding system でエンコードしたものを unibyte
> なバッファに挿入してからデコードするときに、2005年3月の時点の
> Emacs 22.0.50 では、次のような順序で行なうとうまくいかなかった
> ようです。
当時の問題点は、
>> いつからかはわかりませんが、最近の Emacs CVS Head の CJK モード
>> を使って、utf-8 (や utf-16) を扱う場合、Emacs 立ち上げ後、最初に
>> utf-8 を使うときに subst-jis などをロードしますが、そのときの関
>> 数が decode-codeing-region() だと decode 結果が化けるようです。
のように、『最初に utf-8 を使うときに decode-codeing-region() だ
と文字化けするときがある』でした。詳しくは覚えていませんが、最初
に utf-8 を使うときに subst-jis などをロードしますが、そのタイミ
ングがちょっと遅かったんじゃなかったかな?と記憶しています。
## 全然違っていたかもしれませんが。。。
山岡さんの書かれているように、今の emacs-22.0.50 だと、起動時に
Loading subst-ksc...done
Loading subst-gb2312...done
Loading subst-big5...done
Loading subst-jis...done
しているので、一年前の症状は発生しないようです。
しかし、どこで subst-jis をロードしているのかな?と調べたところ、
startup.el の
(defun command-line ()
<...>
(set-language-environment current-language-environment)))
↓
(defun set-language-environment (language-name)
<...>
(utf-translate-cjk-load-tables)
からだということがわかりました。で、意地悪テストで
% setenv LANG C
% emacs -q
と立ち上げた Emacs で、最初に
http://article.gmane.org/gmane.emacs.w3m/5249 の "朝日新聞" を試
したら、案の定、昔と同じように文字化けしました :-)
なので、
> ところが、現在の Emacs 22.0.50 では [1] のやり方でも問題無いよう
> に見えます。
これは真ではないということになります。
> 今後は [1] のやり方に統一しようと思うのですが、ご意見をいただけ
> ますか?
Emacs-22 と 23 でコードを分けるのもめんどくさいですから [1] にし
て、Emacs-w3m 的には起動時に (utf-translate-cjk-load-tables) 相
当を呼んじゃうとか ^^;;;
--
白井秀行 (mailto:shirai@xxxxxxxxxxx)