我目前正在处理一个python脚本(appengine),该脚本从用户(文本)获取输入并将其存储在数据库中以便稍后重新分发。
进来的文字是 unknown ,就编码而言,我只需要编码一次。
来自客户的示例文本:
现在在python中,我认为我可以做的是解码然后对其进行编码,以便两个样本变为:
我使用的代码如下:
#
# Dencode as UTF-8
#
pl = pl.encode('UTF-8')
#
#Unquote the string, then requote to assure encoding
#
pl = urllib.quote(urllib.unquote(pl))
pl
来自 POST 参数的有效负载。
问题是,有时候我会得到特殊的(中文,阿拉伯语)字符,我会收到以下错误。
'ascii' codec can't encode character u'\xc3' in position 0: ordinal not in range(128)
..snip..
return codecs.utf_8_decode(input, errors, True)
UnicodeEncodeError: 'ascii' codec can't encode character u'\xc3' in position 0: ordinal not in range(128)
有没有人知道在给定上述问题的情况下处理字符串的最佳解决方案?
感谢。
答案 0 :(得分:1)
替换
pl = pl.encode('UTF-8')
与
pl = pl.decode('UTF-8')
因为您正在尝试将字节字符串解码为字符串。
Python 2的设计问题允许.encode
字节串(已编码)通过自动将其解码为ASCII(这就是为什么它显然适用于ASCII字符串,仅针对非ASCII字节失败)。