我试图让用户注册我的服务,并且我注意到每当有人用他们的名字中的拉丁美洲字符注册时出错。我尝试阅读几个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