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

Re: Location =?utf-8?b?44Gu5paH5a2X5YyW44GR?=



In [emacs-w3m : No.12630]
	On Sun, 19 Feb 2017 20:40:47 +0900, 白井さん wrote:
> ご無沙汰しています。白井です。

お久しぶりです。:)

> 最近の環境は Emacs-25.1 なのですが、ふと気づいたら、*w3m* の一番
> 上の Location: が文字化けしていました。

> 例えば、

> http://www.google.co.jp/search?q=テスト&lr=lang_ja&hl=ja&oe=UTF-8&tbs=lr:lang_1ja
> https://ja.wikipedia.org/wiki/テスト

> などの「テスト」部分です。ちょっとコード読んで

> w3m-decode-coding-string-with-priority() に
> (setq str (string-make-unibyte  str))
> を復活させたら、「テスト」が表示されたのですが

ごめんなさい。そこだけもとに戻しました。

> Emacs-26 だと

>>> (string-make-unibyte STRING)
>>>
>>> This function is obsolete since 26.1;
>>> use `encode-coding-string'.

> なのですね。。。

このメッセージって行間でいろんなことを言っているんですよ。たぶん。
例えばその「テスト」という文字化けは次のように起こっていると想像
できます。

(with-temp-buffer
  (set-buffer-multibyte t)
  (insert "テスト")
  (set-buffer-multibyte nil)
  (mapconcat 'char-to-string (buffer-string) ""))
 => "テスト"

この例はマルチバイト文字の各 byte を 1文字として扱ってしまう処理、
例えば外部プロセスとのデータのやり取りをマルチバイトのバッファで
行なうようなことが該当するのではないかと思っています。で、くだん
の警告メッセージは、そういうことが起こらないようにしろ、と。

> ## というわけで正解 (というか両用) がわかりません。

私もよくわからないのです。Lars も最近 Gnus で失敗しました。おそ
らく Emacs 26 のリリースまでには、この種の問題に対する対応方法が
明らかになるのではないかと期待しているのですが。
-- 
山岡