SEMI: pgg-gpg: garbled non-ascii message
Daiki Ueno
ueno @ unixuser.org
2003年 12月 16日 (火) 16:40:07 JST
上野です。
>>>>> In [emacs-mime-ja : No.01587]
>>>>> Shinichiro HIDA <shinichiro @ stained-g.net> wrote:
> 参考になるかどうかわかりませんが、追試してみました。
ありがとうございます。おかげさまで原因がわかったような気がします。
> 追試していて、変な現象に気づきました。
> [文字化けする場合]
> 3. wl の Message バッファで region を選択しても pgg-verify-region を
> 呼べない
> 4. 木下さんのメールで v を押すと文字化けする。
> [文字化けしない場合]
> 3. wl で w を押し、draft バッファを尽くり、pgg-sign-region する。
> 4. これ以降、すべての pgg-* で正しく日本語が表示出来る。
バッファの buffer-file-coding-system が確定していない時点で raw-text-dos
を指定してファイルの内容を読み込むと自動的に unibyte buffer にされます。
(cf. M-x describe-coding-system raw-text-dos)
|When you visit a file with this coding, the file is read into a
|unibyte buffer as is (except for EOL format), thus each byte of a file
|is treated as a character.
これは以下のコードを *scratch* で二回以上実行することで確認できます。
(with-current-buffer (get-buffer-create " test")
(erase-buffer)
(set-buffer-multibyte t)
(let ((coding-system-for-read 'raw-text-dos)
(file (make-temp-file "/tmp/tst")))
(unwind-protect
(insert-file-contents file nil 0 0)
(delete-file file)))
enable-multibyte-characters)
pgg-gpg の場合、pgg-sign-region はファイルを作りませんが、
pgg-verify-region は空のファイルを作るため、これを raw-text-dos として読
み込んだ時点で " *PGG output*" バッファが unibyte にされてしまいます。
解決策としては以下の 3 つが考えられます:
1. " *PGG errors*" バッファから署名確認のメッセージをコピーする直前に
" *PGG output*" バッファを multibyte にする
2. " *PGG output*" は unibyte, " *PGG errors*" は multibyte とみなし、
" *PGG output*" を介さずに " *PGG errors*" から署名確認のメッセージを
コピーする
3. サイズが 0 のファイルは読み込まない
まともなのは 2. だと思いますが、とりあえず 1. の修正を添付いたします。
--
Daiki Ueno
-------------- next part --------------
テキスト形式以外の添付ファイルを保管しました...
ファイル名: pgg-gpg.el.diff
型: application/octet-stream
サイズ: 595 バイト
説明: 無し
URL: <http://lists.chise.org/pipermail/emacs-mime-ja/attachments/20031216/d29fd9a8/attachment.obj>
More information about the Emacs-mime-ja
mailing list