Can't send messages containing hankaku chars
Katsumi Yamaoka
yamaoka @ jpl.org
2003年 12月 17日 (水) 08:36:23 JST
semi-1_14 枝と emiko-1_14 枝の SEMI で対策しました。
>>>>> In [emacs-mime-ja : No.01589] 山岡 wrote:
> いわゆる半角カタカナを含むメッセージを送信しようとすると、次のよ
> うなエラーが起きます。これは先端の Emacs 21.3.50 だけで、21.3 で
> は問題ありません。なお、SEMI と FLIM は先端のもので試しました。
> Debugger entered--Lisp error: (error "Multibyte character in data for base64 encoding")
> base64(125 131)
> mime-encode-region(125 131 "base64")
> mime-edit-normalize-body()
> mime-edit-translate-region(89 94 "Multipart_Tue_Dec_16_21:42:34_2003-1")
> mime-edit-translate-body()
> run-hooks(mime-edit-translate-buffer-hook)
> byte-code("..." [run-hooks mime-edit-translate-buffer-hook] 2)
> mime-edit-translate-buffer()
> mime-edit-preview-message()
> call-interactively(mime-edit-preview-message)
Multibyte なバッファにある unibyte 文字列を (replace-match "\\N")
のようなもので置き換えると、先端の Emacs では multibyte 文字列に
変換されてしまうようです。(先端と言っても、Emacs の CVS が止まっ
てしまった 1日前のものです。:-)
バッファが multibyte なんだからそうなって当然という考えもあると
思いますが、\N による置き換えでは、元の文字列がそのまま返ってく
る方が自然ではないでしょうか。加えて、以下のような一貫性の無さも
指摘しておきます。
(let* ((default-enable-multibyte-characters t)
(string (encode-coding-string "遥" 'shift_jis)))
(string-match "\\(.+\\)" string)
(append (replace-match "\\1" nil nil string) nil))
=> (151 121)
(let* ((default-enable-multibyte-characters t)
(string (encode-coding-string "遥" 'shift_jis)))
(with-temp-buffer
(insert string)
(goto-char (point-min))
(looking-at "\\(.+\\)")
(replace-match "\\1")
(append (buffer-string) nil)))
=> (158 2231 121)
--
Katsumi Yamaoka <yamaoka @ jpl.org>
More information about the Emacs-mime-ja
mailing list