[Date Prev][Date Next][Thread Prev][][Date Index][Thread Index]

Detect coding system with priority (was: 文字化け )



>> On Wed, 03 Oct 2001 02:19:21 +0900
>> "ari" == ari@mbf.sphere.ne.jp (ARISAWA Akihiro) said as follows:

土> w3m-detect-coding-region() は、対象となる URL が file:///... の場
土> 合には通常の優先順位リストを使って文字コードを判定し、それ以外の場
土> 合には w3m 専用の優先順位リストを使って判定する、というように対象
土> となるデータの所在によって優先順位リストを使い分けるべきだ、と思い
土> 始めました。

ari> ということで、w3m-coding-system-priority-list というユーザ変数を
ari> 追加し、それに従うようにしました。ローカルのファイルの場合は使わ
ari> ないはずです。

素晴らしいです、有難うございます。適当なページで動作確認しました。

;; 自分のページだと .htaccess が設定されているので、検証できない…。


ari> その際、w3m-detect-coding-region は detect-coding-with-priority 
ari> に合わせて第3引数は priority-list にしました。また、第2候補以降を
ari> 使う場面は思い当たらないので、常に highest の coding-system を返
ari> すようにしました。

えっと、この実装だと、少し脆弱なのではないでしょうか。

こんな設定をする人が悪いのかもしれませんが、

  (with-temp-buffer
    (set-buffer-multibyte nil)
    (insert-file-contents-as-binary w3m-bookmark-file)
    (w3m-detect-coding-region (point-min) (point-max)
                              '(shift_jis euc-japan euc-korea)))

ということをすると、"Invalid or duplicated element in argument" と怒ら
れてしまいます。なお、

  (with-temp-buffer
    (set-buffer-multibyte nil)
    (insert-file-contents-as-binary w3m-bookmark-file)
    (w3m-detect-coding-region (point-min) (point-max)
                              '(shift_jis iso-2022-cn iso-2022-jp)))

は大丈夫なのですね…。何が何やら、私にはもうまったく理解できません。

;; テストは全て Emacs-21.0.106 で行っています。

-- 
土屋 雅稔  ( TSUCHIYA Masatoshi )