新城@筑波大学情報です。こんにちは。
Unison も fj 読んでがんばって欲しいですね。

In article <b4mr7bcraqo.fsf@jpl.org>
        Katsumi Yamaoka <yamaoka@jpl.org> writes:
> 想像ですが、「Unison」は Latin 語圏のために 8-bit 文字の quote
> はするけれども、7-bit 文字で unprintable なものが使われることを
> 想定していないんじゃないでしょうか。

isprint(c) をかけて、false なら =%2X で printf でいいですかね。

------------------------------------------------------------
% cat isprint.c

#include <ctype.h>

main()
{
        printf("\\n %d\n",isprint('\n'));
        printf("\\r %d\n",isprint('\r'));
        printf("\\t %d\n",isprint('\t'));
        printf("ESC %d\n",isprint(0x1b));
        printf("a %d\n",isprint('a'));
}
% make isprint
cc     isprint.c   -o isprint
% ./isprint
\n 0
\r 0
\t 0
ESC 0
a 2
% 
------------------------------------------------------------

> > Quoted printable で、ESC をそのまま流すってアリなんですかね。
> 生の ESC が printable で、かつ伝送上の問題が無い世界だったら。

ctype.h の isprint() は、ESC は、printable ではないと言って
います。

> 逆に、拡大解釈して CR LF などもエンコードしてしまわれると、少々
> 困るのですけれど。

たしかに。

> 例えば Gnus がメールとニュース
> のために定めている Q エンコードの仕様ではこうなります。
> "=?iso-2022-jp?Q?=1B$B%F%9%H=1B=28B?="
> ここで行なわれた変換は ESC -> "=1B" と "(" -> "=28" です。

括弧「(」も変換してしまうのですね。

> > Mule 2.3 + GNUS 4.1 + tm で見ると「=?ISO-2022-JP?Q?テスト?=」
> > になりました。
> tm はちょっと古いのでナンですが、後継の FLIM/SEMI や遠い後継の
> Gnus でもそういう処理をします、と言うか RFC2047 に基づいたエンコー
> ドだとは思っていないみたいです。

古いといってもまあ、使っている人もいるし、選べるなら古い方に
合わせてもらうと適応範囲が広がるということがあります。

\\ 新城 靖 (しんじょう やすし) \\
\\ 筑波大学 電子・情報       \\