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

Strange behavior of w3m-url-decode-string



昨日の改造に,さりげなく

    2003-06-30  TSUCHIYA Masatoshi  <tsuchiya@namazu.org>

	(w3m-url-decode-string): Call `vector' instead of `string' to
	avoid making unexpected multibyte characters.

という変更が入っています.これは,

    (1) M-x w3m-namazu RET 漢字 RET
    (2) 何か別のページを表示させる
    (3) M-x w3m-view-previous-page RET で戻る

という操作をした時に文字化けするので行ったのですが,どうしてこれで直っ
たのか理由が分からなくなってしまいました.

文字化けしている状態で,ちょっと動作を調べてみると以下のような結果が得
られます.

    (with-current-buffer "*w3m*" w3m-current-url)
    => "about://namazu/?index=default&query=%8a%bf%8e%9a&whence=0"

    (w3m-url-decode-string
     "about://namazu/?index=default&query=%8a%bf%8e%9a&whence=0")
    => "about://namazu/?index=default&query=漢字&whence=0"

ここまでは正常なのですが,

    (let ((url (with-current-buffer "*w3m*" w3m-current-url)))
      (w3m-url-decode-string url))
    => "about://namazu/?index=default&query=梶ソ字&whence=0"

この結果が謎です.Emacs21 の string() に 128 以上の数字を与えると,勝
手に multibyte 文字列になってしまうので,そこら辺が絡んでいるのだろう
とは思うのですが….

どなたか原因の分かる方はいらっしゃいませんか.

-- 
土屋 雅稔 ( TSUCHIYA Masatoshi )