文字コードを変換するときに注意する文字

Pythonスレより。

144 名前: 136  Mail: sage 投稿日: 2008/03/02(日) 03:39:09 
>>137
「〜」はEUC-JPとUTF-8を相互変換するときのテーブルがOS/言語ごとに違うために
変換できなかったり違うグリフで表示されたりします。

俺はよく使う文字について以下のようなコードでWindows用にそろえてます。

    unification = {
        0x2014: 0x2015, # HORIZONTAL BAR
        0xFF5E: 0x301C, # WAVE DASH
        0x2225: 0x2016, # DOUBLE VERTICAL LINE
        0x22EF: 0x2026, # HORIZONTAL ELLIPSIS
        0xFF0D: 0x2212, # MINUS SIGN
        0xFFE0: 0x00A2, # CENT SIGN
        0xFFE1: 0x00A3, # POUND SIGN
        0xFFE2: 0x00AC} # NOT SIGN

    text = unicode(...).translate(unification)

136の例では ifp.read().translate(...) とすればよいと思われ。


145 名前: デフォルトの名無しさん  Mail: sage 投稿日: 2008/03/02(日) 04:15:41 
ごめ、訂正。Windows用にそろえてるんじゃなくて、PythonのEUC-JP/Shift_JIS/ISO-2022-JPコデックが
受け付けるコード値に置換してる、というのが正しいです。

ついでに説明しとくと144のunification(辞書)は、キーはWindowsで日本語入力したときに使われるコード値、
各キーの値はPythonの日本語コデックが受け付けるコード値です。

この8個の文字にOS/言語ごとの変換テーブルの違いが集中しているので、
144の置換をしておくと UTF-8 → EUC-JP/Shift_JIS/ISO-2022-JP 変換時のエラーがだいぶ減るはず。

なんという参考になる情報。

142 名前: デフォルトの名無しさん  Mail: sage 投稿日: 2008/03/01(土) 16:42:34 
これみて自分で変換するしかないでしょうね
http://www.ajisai.sakura.ne.jp/~dindi/chrc/ref/wincode2.txt

これも参考になる。