Python和unicode

Python和unicode,python,unicode,bottle,Python,Unicode,Bottle,我正在用python中的瓶子构建一个小型RESTful API,目前在处理请求对象时遇到了字符编码问题 点击http://server.com/api?q=äöü并查看请求。在服务器上查询['q']会得到“ÃÃÃÃÃü”,这显然不是我要找的 对于包含URLCoded keyq格式和äöü值的POST请求也是如此request.forms.get('q')包含“ÕÃü” 这是怎么回事?我真的没有办法用不同的编码来解码这些元素,或者我可以吗?瓶子是否有通用选项以unicode格式存储这些内容

我正在用python中的瓶子构建一个小型RESTful API,目前在处理请求对象时遇到了字符编码问题

点击
http://server.com/api?q=äöü
并查看
请求。在服务器上查询['q']
会得到“ÃÃÃÃÃü”,这显然不是我要找的

对于包含URLCoded key
q
格式和
äöü
值的POST请求也是如此
request.forms.get('q')
包含“ÕÃü”

这是怎么回事?我真的没有办法用不同的编码来解码这些元素,或者我可以吗?瓶子是否有通用选项以unicode格式存储这些内容


谢谢。

请求。查询['q']
表单。获取('q')
返回web浏览器提交的原始字节值。浏览器以UTF-8编码字节形式提交的值为
'\xc3\xa4\xc3\xb6\xc3\xbc'

如果您打印该字节字符串,并且打印位置将其解释为ISO-8859-1或类似的Windows代码页1252,您将获得
。如果您正在通过打印到Windows命令提示符或记事本显示的文件进行调试,这就是原因


如果使用
request.query.q
forms.q
瓶子将提供Unicode字符串,使用UTF-8从字节版本解码。通常最好尽可能使用这些Unicode字符串。(尽管您可能仍然无法将它们打印到控制台。众所周知,Windows命令提示符在处理非ASCII字符方面非常糟糕,因此,它是调试Unicode问题的一个不好的地方。)

在本例中,为了转换它,我喜欢这个搜索字段。编码(“ISO-8859-1”)。解码(“utf-8”)

我不知道这样的直接财产访问是可能的。非常感谢。必须使用字典的形式搜索非标准待发帖子的属性。此
请求.POST.question_10
还有另一个不同的替代方法,例如
请求.POST[“question_10”]
?如果需要读取具有非标识符或动态名称的属性,则始终可以像对待任何其他对象一样使用
getattr
。例如
getattr(forms,'q')