2012-01-15 19 views
4

私は、フォームのデータを持っている: v = "\xc5\x84"印刷UTF-8でエンコードされたバイト文字列

これは、UTF-8エンコードされた文字「N」のバイト表現です。

どのように印刷することができますか?<変数v?

v = "\\xc5\\x84"(ダブルバックスラッシュ)

v = "\xc5\x84"(単一のバックスラッシュ)VS

私は、元の変数v含まれる文字列でのpython 2.7.2

を使用しています

それ自体は有効なutf-8文字です。

答えて

7

編集私のマシンでは、以下に示すように、出力は使用されるシェル/ Pythonに依存します。
Klausのコメントによれば、ここでは主要な俳優があなたのシステムのロケール設定になります。

>>> v = "\xc5\x84" 

>>> print v #in pycrust shell python 2.6 
Å„ 
>>> 

>>> print (v) #in idle python 3.2 
Å 
>>> 

マシンは、以下の設定があります。

>>> import locale 
>>> locale.getlocale() 
('es_ES', 'cp1252') 

を独自にこの設定を、あなたは

>>> print v.decode('utf-8') 
ń 
>>> 
+1

+1これは作業の可能性が最も高いです。 Windowsで使用されているシェルがコマンドプロンプトウィンドウ(別名 'cmd.exe')である場合、USや西ヨーロッパ(エンコーディングは' cp437'または 'cp850')のようなロケールでは動作しません。ヨーロッパのロケールは 'cp852 'をエンコードします。 –

-2

オムであなたのキャラクターを取得するには、特別なことをする必要はありません。 ..それはちょうどprint vですか?

>>> v = "\xc5\x84" 
>>> print v 
ń 
+0

答えはPythonインタプリタに依存します。 B'cozは私が印刷したときに出力は ''であった。私はPython 2.6を使用しています – RanRag

+1

私はpython 2.6(pycrust)でもpython 3.2(idle)でも正しく印刷できません。あなたの答えにコメントできますか? – joaquin

+0

@joaquinたぶん...私はOPとしてPython 2.7.2を使用していますが、Python 2.6でも使えます。しかし、シェルに関連するかもしれませんか?私のロケールはUTF-8( 'LC_CTYPE =" UTF-8 "') –

関連する問題