[sylpheed-jp:10832] Re: sylpheedからのコピー&ペースト
Masayuki MORIYAMA
msyk @ mtg.biglobe.ne.jp
2009年 11月 10日 (火) 15:43:03 JST
森山です。
ShimamotoNekoTatsuya wrote:
> メール内に「〜」の文字(JIS:2141、SJIS:8160、EUC:A1C1)があると
> ペースト先ではA1C1ではなく3バイトコードの8FA2B7になってしまいます。
これは典型的な WAVE DASH vs FULLWIDTH TILDE の問題です。
Sylpheed は、あるバージョンから Windows の機種依存文字
対応されました。
Windows の機種依存文字が含まれいてる ISO-2022-JP を
UTF-8 へ変換するために内部で ISO-2022-JP をいったん
シフトJISエンコーディングに変換し、それを iconv(3) で
CP932 から UTF-8 に変換することで機種依存文字対応がさ
れています。
CP932 から UTF-8 への変換では、「〜」は EF BD 9E (U+FF5E
FULLWIDTH TILDE) に変換されます。この文字を UTF-8 か
ら EUC-JP に変換すると JIS X 0212 補助漢字の TILDE
(8F A2 B7) に変換されます。
回避策としては、だいたい次の6つの方法が考えられます。
(実際に試して出来る事を確認してわけではないので、もしか
したら問題がある方法もあるかもしれません)
(1) ja_JP.UTF-8 ロケールを使う
この方法をお薦めします。
今や多くのソフトが内部処理の文字コードがUTF-8など
のUnicodeで処理しているので、Sylpeedに限らず意図
せぬ変換をさせないためには、UTF-8 で使うのが一番
問題が少ないからです。
(2) gnome-terminal ではなく konsole を使う。
その場合、環境変数 UNICODEMAP_JP に次の設定が有効
な状態で konsole を起動するようにします。
UNICODEMAP_JP=cp932,nec-vdc,ibm-vdc,udc
(3) ja_JP.EUC-JP ロケールの文字コード変換を eucJP-ms
にしてしまう。(localedef での設定)
(4) iconv(3) の EUC-JP の変換を eucJP-ms の変換に置き
換える。
/usr/lib/gconv/gconv-modules を書き換えて
iconvconfig を実行
(5) パッチを当てていない素の libiconv をビルドして
Sylpeed で libiconv を使うようにする。
CP932->UTF-8 の変換で「〜」が E3 80 9C (U+301C
WAVE DASH) に変換される事を利用する。
(6) Sylpeed を修正して ISO-2022-JP -> UTF-8 変換で、
「〜」などの一部の文字のコード値を JIS 準拠のコード
値に置換するコードを追加する (U+FF5E -> U+301C など)
--
森山 将之 <msyk @ mtg.biglobe.ne.jp>
Sylpheed-jp メーリングリストの案内