如何正确地对latin-1文件名进行解码和重新编码以打开它

时间:2018-10-30 12:56:31

标签: python encoding iso-8859-1

我正在尝试使用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,但没有运气(相同的错误-表示找不到文件)。

有什么想法可以解决这个问题吗?不幸的是,重命名文件本身并不是一种选择。我想正确解码它,然后重新编码(其他人推荐的编码三明治)。

1 个答案:

答案 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