【发布时间】:2018-01-14 01:52:24
【问题描述】:
我正在使用 selenium 在网络公式中插入带有德语变音符号的文本输入。 python 脚本的声明编码是 utf-8。该页面使用 utf-8 编码。当我定义一个这样的字符串时,一切正常:
q = u"Hällö" #type(q) returns unicode
...
textbox.send_keys(q)
但是当我尝试使用 ConfigParser(或其他类型的文件)从配置文件中读取时,我在 webformular (Hällö) 中得到格式错误的输出。这是我使用的代码:
the_encoding = chardet.detect(q)['encoding'] #prints utf-8
q = parser.get('info', 'query') # type(q) returns str
q = q.decode('unicode-escape') # type(q) returns unicode
textbox.send_keys(q)
给 send_keys 函数的两个 q 有什么区别?
【问题讨论】:
-
改用
q.decode('latin-1')。 -
得到同样的畸形输出
-
这是 mojibake 的经典例子。如果您在 UTF-8 终端(在 Python 2 或 3 中)执行此操作:
print(u"Hällö".encode('utf8').decode('latin1')),您将获得Hällö。相反,print(u'Hällö'.encode('latin1').decode('utf8'))打印Hällö。
标签: python unicode encoding utf-8 character-encoding