我試圖讓用戶註冊我的服務,並且我注意到每當有人用他們的名字中的拉丁美洲字符註冊時出錯。我嘗試閱讀幾個SO帖子/網站,如下所示:Python編碼的拉丁美洲字符
Python regex against Latin-1 character encoding?
http://www.w3.org/TR/2009/WD-html5-20090423/infrastructure.html#character-encodings-0
http://docs.python.org/2/library/json.html
https://pypi.python.org/pypi/anyjson
但仍無法解決它。我的代碼示例是按如下:
>>> val = json.dumps({"name":"Déjà"}, encoding="ISO-8859-1")
>>> val
'{"name": "D\\u00c3\\u00a9j\\u00c3\\u00a0"}'
反正是有強制編碼在這種情況下,對於和反序列化既要工作?任何幫助表示讚賞!
編輯
客戶端是Android和iPhone應用程序。我使用以下庫編碼客戶端上的JSON:
http://loopj.com/android-async-http/(機器人)
https://github.com/AFNetworking/AFNetworking(IOS)
EDIT 2 同樣的文字,從接收到的服務器Android客戶端按如下:
{"NAME":"D\ufffdj\ufffd"}
我用anyjson
反序列化,它說:
File "/usr/local/lib/python2.7/dist-packages/anyjson/__init__.py", line 135, in loads
return implementation.loads(value)
File "/usr/local/lib/python2.7/dist-packages/anyjson/__init__.py", line 99, in loads
return self._decode(s)
File "/usr/local/lib/python2.7/dist-packages/simplejson/__init__.py", line 454, in loads
return _default_decoder.decode(s)
File "/usr/local/lib/python2.7/dist-packages/simplejson/decoder.py", line 374, in decode
obj, end = self.raw_decode(s)
File "/usr/local/lib/python2.7/dist-packages/simplejson/decoder.py", line 393, in raw_decode
return self.scan_once(s, idx=_w(s, idx).end())
ValueError: ('utf8', "D\xe9j\xe0", 1, 2, 'invalid continuation byte')
有關您的問題的更多信息將有所幫助。數據來自哪裏?你如何處理它? – Thanatos
你能告訴我們一些應用程序發送/服務器正在接收的原始數據嗎? – icktoofay