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

asahi rss の ヘッダーの文字化け



白井です。

# 山岡さん asahi の対応お疲れ様でした。
# おかげで以下の実験が出来たりしました ^^;;;

asahi の rss のヘッダー部分が mew-shimbun で化けるという話を聞い
て先週から調べていたのですが、確かに化けます。

で、いろいろと条件を絞ってためしてました。

(1) Mule-UCS を *使っていない* Emacs CVS Head(近辺)で化ける。
(2) ほとんど 100% 化ける。
(3) なにかすると化けないこともある。
(4) 化けるときは、shimbun-headers() の戻り値がすでに化けている。
(5) 化けるときは、shimbun-retrieve-url() で取得したバッファがす
    でに化けている。

そこで再現コードを作ってみました。ちょっとためして貰えるとありが
たいです。

Emacs CVS Head(近辺)で 'emacs -q' で起動直後に test.el の各部分
を動かしてみてください。また、それぞれのテストの実行前に Emacs
を再起動してください。

そうすると、
test1
 *tmp1* => 化ける
 *tmp2* => 化けない

test2
 *tmp1* => 化けない

test3
 w3m => 化ける

となると思います。ようするに Mew も shimbun も関係なくて、Emacs
を立ち上げた後 w3m-decode-buffer() で初めて utf-8 を使うために
subst-* をロードする状態だと(なぜだか)化けてしまうようです。

## さてどうしましょうかねぇ。。。Emacs のバグかなぁ。

-- 
白井秀行 (mailto:shirai@meadowy.org)
;; -*- mode: Emacs-Lisp; coding: iso-2022-7bit-unix -*-

;; test1
(let ((buf1 (get-buffer-create "*tmp1*"))
      (buf2 (get-buffer-create "*tmp2*")))
  (pop-to-buffer buf1)
  (erase-buffer)
  (require 'shimbun)
  (shimbun-retrieve-url "http://www3.asahi.com/rss/index.rdf" 'reload)
  (pop-to-buffer buf2)
  (erase-buffer)
  (shimbun-retrieve-url "http://www3.asahi.com/rss/index.rdf"))


;; test2
(let ((buf1 (get-buffer-create "*tmp1*")))
  (decode-coding-string (encode-coding-string "あ" 'utf-8) 'utf-8)
  (pop-to-buffer buf1)
  (erase-buffer)
  (require 'shimbun)
  (shimbun-retrieve-url "http://www3.asahi.com/rss/index.rdf" 'reload))

;; test3
(let ()
  (require 'w3m)
  (w3m "http://www3.asahi.com/rss/index.rdf"))