[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 メーリングリストの案内