2011-01-05 7 views
1

私は私のロケールが、私はBIG5にUTF-8文字列を変換するには、それが動作しないことができる多くの方法を試してみてください( 'en_USの'、 'UTF8')utf-8 stringをpythonでbig5に変換するには?

でのPython 2.6.6 を使用しています。 これを行う方法がわかっている場合は、アドバイスをお願いします。ありがとうございます。


'單車' と呼ばれる中国語の単語、それはそれは、Unicodeの '自転車'

を意味\ u55ae \ u8eca

str_a = u'\u55ae\u8eca' 
str_b = '\u55ae\u8eca' 
print str_a # output '單車' 
print str_b # output '\u55ae\u8eca' 

私はstr_aが仕事することができ知っているが、私がしたいれますstr_bをbig5にも変換します。

デコード、エンコード、ユニコードを試してみますが、まだ動作しません。

良いアイデアはありますか?ありがとう。あなたがこれを行うことができるはず

+0

「私は、デコード、エンコード、Unicodeを試してみますしかし、それでも動作することはできません。あなたが試したコードとあなたが持っていた問題を投稿してください。あなたはUTF-8をBig-5に変換しません。 UTF-8をUnicodeにデコードします。次に、UnicodeをBig-5にエンコードします。あなたが試したデコードとエンコードを掲示してください。 –

+0

あなたのアドバイスをありがとう、私はこれに気づくでしょう。 –

答えて

5

str_bは、バイトのシーケンスです:

In [19]: list(str_b) 
Out[19]: ['\\', 'u', '5', '5', 'a', 'e', '\\', 'u', '8', 'e', 'c', 'a'] 

バックスラッシュとuなど、すべてのちょうど別の文字です。 unicode-escapeとUnicodeのデコードにMAL-形成された文字列str_bを変換するには

In [24]: list(str_a) 
Out[24]: [u'\u55ae', u'\u8eca'] 

::Unicodeオブジェクトstr_a内のUnicodeコードポイントのシーケンスにそれを比較

In [20]: str_b.decode('unicode-escape') 
Out[20]: u'\u55ae\u8eca' 

In [21]: print(str_b.decode('unicode-escape')) 
單車 
+0

恐ろしい!それは私が望む答えです。どうもありがとうございました。 –

3

str_a = u'\u55ae\u8eca' 
str_b = str_a.encode('big5') 
print str_a 
print str_b.decode('big5') 
+0

'repr()'を追加して、彼が望む出力を得る。 – marcog

関連する問題