[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Multibyte character in data for base64 encoding
>>>>>> In [emacs-w3m : No.05630]
>>>>>> TSUCHIYA Masatoshi <tsuchiya@pine.kuee.kyoto-u.ac.jp> wrote:
>> CVS 先端の shimbun で,表題のようなエラーに遭遇している方はいらっしゃ
>> るでしょうか?
今日はこれを何度でも再現できたので原因を特定しました。以下と同じ
です。
(condition-case err
(with-temp-buffer
(set-buffer-multibyte nil)
(eword-encode-string "え?"))
(error (error-message-string err)))
=> "Multibyte character in data for base64 encoding"
eword-encode-string は encode-mime-charset-string という関数を呼
ぶのですが、これは文字列をエンコードするだけが仕事であるにも関わ
らず、そのときの current-buffer の multibyteness が nil であると
文字列をエンコードせずにそのまま返す仕様になっています。
何年も前に、これは変じゃないか、と言ったら守岡さんは同意してくれ
た記憶があるのですが、結局今の今までだれも作業をしていません。:p
で、shimbun.el の該当部分を multibyte なバッファで囲う、という対
策を行ないました。
なお、ぼくの場合は、すでにサーバーに存在しない、日経の非常に古い
記事を読もうとしたときに、サーバーが ascii 文字だけのエラーメッ
セージを返すと、そのときの作業バッファ " *temp*" が unibyte になっ
てしまうために、件のエラーが起きました。
--
Katsumi Yamaoka <yamaoka@jpl.org>