在Python中转换非英语字符
我正在做一个Google App Engine的项目。当我用jQuery发送一个序列化的表单作为HTML POST请求时,我得到了一些编码的字符,而不是非英语字符。用纯HTML发送就没有问题。
在序列化的结果中,我得到的是:".... defaultgroupcity=Lang%C3%A5 ..."
,但我应该得到的是:"defaultgroupcity=Langå"
。
这种字符转换的问题在我之前的项目中也困扰了我很久,我需要把它搞明白。在这个项目之前,我通常会用replace("%C3%A5", "å")
来解决,但这只是个临时的解决办法,并不是长久之计。
有没有人能给我指条明路?我想好好学习这个问题。一定有一种通用的方法可以解决字符转换的问题。我到底漏掉了什么呢?
2 个回答
0
urllib.unquote
看起来确实在正确解码这个字符串:
>>> urllib.unquote("%C3%A5")
'\xc3\xa5'
>>> print urllib.unquote("%C3%A5")
å
也许错误出现在你应用的其他地方?
2
你需要用到 urllib.unquote(),还有一定要了解一下 每个软件开发者必须知道的关于Unicode和字符集的基本知识(没有借口!) 以及 Python的Unicode使用指南。
你可能会觉得“这个对å来说太复杂了”,确实是这样,但这其实是人类在处理字符时遇到的普遍问题,而Unicode就是为了解决这个问题而出现的。