当我在浏览器(Chrome)中提交一个表单时,我得到的umlauts“äü”被重新编码为%F6%E4%FC
(我使用的是POST请求[form submit]并从协议体中获得),但是如果我在Python中做同样的操作,我得到%C3%B6%C3%A4%C3%BC
。
现在的问题是,如果我取消引用Python编码,它可以完美地工作(正如预期的那样),但是从浏览器编码的代码将失败。
有人知道为什么吗?或者至少给我解释一下?在Ubuntu上运行Python3.4。
>>> import urllib.parse
>>> urllib.parse.quote('öäü')
'%C3%B6%C3%A4%C3%BC'
>>> urllib.parse.parse_qs('v=' + _)
{'v': ['öäü']}
>>> urllib.parse.parse_qs('v=' + '%F6%E4%FC') # That encoded String from the Browser
{'v': ['���']}
浏览器中的字符串是拉丁1编码的,urllib.parse使用utf-8,如果使用拉丁语-1作为编码,则使用urllib.parse.quote公司名称:
^{pr2}$"FC"
和其他十六进制值是用于字符的ISO拉丁1数值:要获得正确的输出,您需要指定正确的编码:
{1{U+U是一个从U到0的拉丁码
相关问题 更多 >
编程相关推荐