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

Re: w3m-type for w3m-0.3-m17n-20020316.tar.gz



From: SAITO Takuya <reed@lily.freemail.ne.jp> さん曰く
Subject: [emacs-w3m:03003] w3m-type for w3m-0.3-m17n-20020316.tar.gz
Message-ID: <20020317.181534.74754808.reed@lily.freemail.ne.jp>
Date: Sun, 17 Mar 2002 18:15:34 +0900 (JST)

> $ w3m -version
> w3m version w3m/0.3+cvs-1.342-m17n-20020311, options lang=...

丁度同じ w3m-m17n を持っていたので試したのですが、

> すると、mew-shimbunでzdnet.compの記事が文字化けして取得される
> ようになってしまいました。
> 例えば http://www.zdnet.co.jp/news/0203/15/e_coursey.html などです。

たしかに化けまくりますね。

> ただし、全てが化ける訳ではなく、rubyの記事は正常に取得できます。

けど、化ける記事は wanderlust でも化けるし、(試していませんが)
T-gnus で shimbun しても化けるんじゃないかな。w3mmee も化ける
sb-*.el があると思います。

原因としては、w3m-m17n だと retieve 結果の buffer が *生* のバイ
ト列だけど、w3m だと *生じゃない* データで、shimbun 自体は *生じゃ
ない* と思って動いているからだと思います。

例えば、sb-zdnet.el に関してだけいえば、

shimbun.el:
(defun shimbun-make-mime-article (shimbun header)
  "Make a MIME article according to SHIMBUN and HEADER.
If article have inline images, generated article have a multipart/related
content-type if `shimbun-encapsulate-images' is non-nil."
  (let ((case-fold-search t)
	(count 0)
	beg end
	url type img imgs boundary charset)
    (current-buffer)
*   (when (eq w3m-type 'w3m-m17n)
*     (set-buffer-multibyte t)
*     (decode-coding-region (point-min) (point-max) 'undecided))
    (setq charset
	  (upcase (symbol-name
		   (detect-mime-charset-region (point-min)(point-max)))))
    (goto-char (point-min))
   <<ship>>

sb-zdnet:
(luna-define-method shimbun-get-headers ((shimbun shimbun-zdnet)
					 &optional range)
* (when (eq w3m-type 'w3m-m17n)
*   (set-buffer-multibyte t)
*   (decode-coding-region (point-min) (point-max) 'undecided))
  (funcall (intern (concat "shimbun-zdnet-"
			   (shimbun-current-group-internal shimbun)
			   "-get-headers"))
	   shimbun))

と header と body を扱う前に decode-coding-regino すれば文字化け
しなくなります。

# set-buffer-multibyte() が必要かどうかは良くわからない ^^;

> これは、
>   w3m-0.3-m17n-20020316.tar.gzを使うときのw3m-typeは、'w3m でよい
>   w3m-typeが 'w3m-m17n でも文字化けせずに取れるべき

おそらく後者でしょう。きっと、昔からダメだったんじゃないのかなぁ?

ぼくが zdnet に適用した方法を全体的にうまくやればいいと思うのだ
けど、ぼくには上記の様な泥臭い方法しか考え付きません。なにか、き
れいな方法はあるでしょうか?

sb-tcup.el などにある、

    (decode-coding-region (point-min) (point-max)
			  (shimbun-coding-system-internal shimbun))

をみんな設定すればいいのかな? とも思うのですが、
shimbun-coding-system-internal ってどこでどうなっているのかさえ
わからない。


-- 
白井秀行@結局、良くわからないままお昼休みが終わってしまった。^^;;;