[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: emacs-w3m, w3m-m17n and mule
>>>>> In [emacs-w3m : No.03699]
>>>>> Hideyuki SHIRAI (白井秀行) <shirai@rdmg.mgcs.mei.co.jp> wrote:
ari> ● w3m-m17n を使用している場合に化ける。
ari> w3m-m17n に -I を指定しなかったり、w3m-m17n の知らない coding-sysmte を
ari> 指定した時に、w3m-m17n 側で正しく判定できないのでしょうね。
白井> w3m-m17n に -I で渡さないといけないのですね。(w3mee もかな)
白井> ちょっと時間がないので、あまり確認はしていないのですが、付属のパッ
白井> チをあてて、~/.emacs で
白井> (codepage-setup 1251)
白井> するという作戦はどうでしょう。(Emacs20/21 限定かしら? XEmacs は
白井> わからない)
附属のパッチをあてたるとバッチリでした:-)
XEmacs-21.4 や Mule-2.3 でも問題ありませんでした。
codepage-setup は実行しなくても良いようです。
>>>>> In [emacs-w3m : No.03696]
>>>>> ari@mbf.sphere.ne.jp (ARISAWA Akihiro) wrote:
ari> ● Mule-UCS + w3m を使用した場合、auto-detect の結果が iso-8859-1 となる
ari> (setq w3m-coding-system-priority-list '(cyrillic-koi8)) としてもダメ。
ari> (set-language-environment "Cyrillic-KOI8") していると、cyrillic-koi8 に
ari> なりました。どうやら、set-language-environment-coding-systems で
ari> やっている以下の処理が効いているようです。
w3m-detect-coding-region で同様の処理をすれば良さそうです。
(defun w3m-detect-coding-region (start end &optional priority-list)
"Detect coding system of the text in the region between START and END.
Return the first possible coding system.
PRIORITY-LIST is a list of coding systems ordered by priority."
(let (category categories original-categories)
(unwind-protect
(progn
(dolist (codesys priority-list)
(setq category (coding-system-category codesys))
(unless (assq category categories)
(push (cons category (symbol-value category))
original-categories)
(set category codesys)
(push (cons category codesys) categories)))
(update-coding-systems-internal)
(car (detect-coding-with-priority start end (nreverse categories))))
(dolist (category-codesys original-categories)
(set (car category-codesys) (cdr category-codesys)))
(update-coding-systems-internal))))
XEmacs は、w3m-detect-coding-region は変更しなくてもコード判定は
期待通りに動きましたが、別の問題がありました。
● XEmacs-21.4 + Mule-UCS で w3m を利用時に、エラーが発生し、実体参照が
デコードされない。
以下のようなエラーが発生しました。
Signaling: (error "ID:128 is not valid charset-id.")
signal(error ("ID:128 is not valid charset-id."))
cerror("ID:%d is not valid charset-id." 128)
apply(cerror "ID:%d is not valid charset-id." 128)
error("ID:%d is not valid charset-id." 128)
char-1-elisp-representation(8388668)
mucs-convert(ucs-codepoint-to-emacs-char-conversion 188)
ucs-representation-decoding-backend(ucs 188 nil)
ucs-to-char(188)
w3m-ucs-to-char(188)
w3m-decode-entities(reserve-prop)
w3m-fontify()
w3m-prepare-text-content("http://www.mypsion.ru" "text/html" #<buffer "*w3m*"> nil)
(以下略)
(char-to-ucs (make-char 'cyrillic-iso8859-5 33))
=> 161
となるあたりが怪しいですが…。
--
有沢 明宏