2012-07-07 6 views
5

私はGoogle App Engine Python 2.5を使用しています。UnicodeDecodeError: 'ascii'コーデックは、位置0のバイト0xc3をデコードできません:序数が範囲外です(128)

myuserの名前が値

userName  = unicode(userName).encode('utf-8') # äºï¼égãwmj is value in this variable 

userName  = unicode(userName).encode('utf-8') 
strData = '{\"Sid\" :1, \"Oppid\" :%s, \"Aid\" :%s, \"EC\" :\"%s\", \"Name\" :\%s"' % (enemyID, userID, userEmpCode,userName) 


    params = {'deviceToken' : oDeviceToken, 
       'message'  : strMessage, 
       'CertificateId' : certificateId, 
       'Data'   : strData 
      } 


result = urlfetch.fetch(url = url, 
      payload = urllib.urlencode(params), 
      method = urlfetch.POST, 
      headers = {"Authorization" : authString}, 
      deadline = 30 
      ) 

を以下しているので、私は私が私がペイロードとしてそれを送ることができるようにUTF-8にそれをエンコードするためのユーザー名で次の手順をやって、次のコードにunicodedecoderror経験しています。

username = unicode(username).encode(utf-8) 

私は

..あなたがすることができます。..間違ってたりれるものガイドしてください、私はurllib.urlencode(params)

を呼び出すときにエラーが発生したと信じて、何のAppEngine上のUnicode文字列に対処するための究極の戦略でなければなりませんPythonは...

は、私は別のスレッド..を読んで別の解決策を試してみましたが、まだ動作しませんでした

+0

スタックトレースを提供してください。そして、他の場所で定義されている変数を使用しない最小限の作業例を作成しようとするかもしれません。 – oxc

答えて

7

ヨ問題は、すでにエンコードされた文字列にエンコードされていないunicode(userName)を呼び出していることが原因であると思われるので、現在のデフォルトの文字列エンコードにデフォルト設定されています(ascii)。

いずれにしてもunicodeを呼び出すべきではありません。ユニコードの値がわかっていれば、すでに問題はありません。正しくない場合は、.decodeに正しいエンコーディングを呼び出してください。
確信が持てない場合は、isinstanceを使用してテストしてください。ユニコード値をデコードしようとすると別のエラーが発生する可能性があるためです。

1

私は、Python 3のコードをUbuntu Linux 14.04からFreeBSD 10.3に移植するときに同様の問題が発生しました。後者のシステムでは、Python 3.4.4でファイルを開くときに、UTF-8の代わりにデフォルトでASCIIが使われているようです。

ファイルopenコマンドは私の問題を解決してencoding='utf-8'を指定:

open('filepath', encoding='utf-8') 
関連する問題

 関連する問題