2012-03-28 16 views
2

python 2.7とpython 3.2のwindows-1251へのデコード方法は?
例:pythonのwindows-1251へのURLデコード方法

a = "пример" 
urllib.quote_plus(a) 
'%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D1%80' (unicode) 

どのようにウィンドウ-1251でそれを作るために(%のEFの%のF0%E8%のECの%E5%でのF0)

答えて

4

今まで 'U' 接頭辞なしで "国際" の文字列を使用しないでください。これがなければ、あなたの "文字列"はちょうどバイトの塊であり、Pythonはそれをどうすればいいのか分かりません。接頭辞で、すべてが簡単:

a = u"пример" 

print urllib.quote_plus(a.encode('utf8')) 
## %D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D1%80 

print urllib.quote_plus(a.encode('cp1251')) 
## %EF%F0%E8%EC%E5%F0 
+0

>>> urllib.quote_plus(a.encode( 'CP1251')) トレースバック(最新の呼び出しの最後): で ファイル ""、ライン1、ファイル "/usr/lib/python2.7/encodings/cp1251.py"、行12、エンコード return codecs.charmap_encode(入力、エラー、encoding_table) UnicodeDecodeError: 'ascii'コーデックは、バイト位置0xd0をデコードできません0:序数が範囲内にない(128) – wd5

+0

PYTHONIOENCODING!=あなたの古典記号 – georg

+0

は正解です。私のエラーは、それは非ユニコードです – wd5

関連する問題