我正在尝试使用selenium打开本地文件
driver.get( ('file://' + file ))
其中file
是文件名。
文件名中似乎包含latin-1个字符:
.. \\产品名称-Something.html
使用file.decode('latin-1')
时,我得到:
.. \\产品名\ x96 Something.html
如果我仅使用driver.get( ('file://' + file ))
,则会得到:
UnicodeDecodeError: 'utf8' codec can't decode byte 0x96 in position 81: invalid start byte
如果我使用driver.get( ('file://' + file.decode('latin_1') ))
,则会收到一条错误消息,指出找不到该文件:
...fileNotFound&u=file%3A///C%3A/PRODUCT%20NAME%20%C2%96%20Something%20Something.html.
我不确定100%期望使用哪种编码,但是我尝试将文件名重新编码为unicode和utf-8,但没有运气(相同的错误-表示找不到文件)。
有什么想法可以解决这个问题吗?不幸的是,重命名文件本身并不是一种选择。我想正确解码它,然后重新编码(其他人推荐的编码三明治)。
答案 0 :(得分:0)
弄清楚了。问题在于html文档中有def repeat_to_length(string_to_expand, length):
return (string_to_expand * ((length/len(string_to_expand))+1))[:length]
,并且严格意义上并非如此。标题包含'–',它是charset='utf-8'
编码的。
我已经通过添加异常和字符校正功能来解决此问题:
cp1252