[Date Prev][Date Next][Thread Prev][Thread Next][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 のリリースまでには、この種の問題に対する対応方法が
明らかになるのではないかと期待しているのですが。
--
山岡