[Date Prev][Date Next][Thread Prev][][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>