0

我有一个属于 html 的文本。我想把它保存到一个文件中。

这在 Eclipse 的调试模式下工作正常,但在 shell 运行时失败。我正在使用一个失败的 html 的简短示例。

xx = '<input type="hidden" name="charset_test" value="€,´,€,´,水,Д,Є" />'
with codecs.open('myfile.htm'), 'wb', encoding="utf-8") as output:
    output.write(data)

我得到:

 Exception 'ascii' codec can't decode byte 0xe2 in position XXX: ordinal not in range(128)

其中 XXX 是“奇怪”符号(例如 EURO 符号)在相关文件中的位置。

为什么这在 Eclipse 而不是 shell 中工作?我该如何解决这个问题?

我试过了

HTMLParser.HTMLParser().unescape()
unquote()
unicode()

没有任何效果...

4

1 回答 1

1

以下代码适用于我...

# coding=utf-8

import codecs

data = '<input type="hidden" name="charset_test" value="€,´,€,´,水,Д,Є" />'
with codecs.open('myfile.htm', 'wb', encoding="utf-8") as output:
    output.write(data.decode('utf-8'))

...但是如果源数据已经 UTF-8 编码,并且您还想写入 UTF-8 数据,则无需将其解码为 Pythonunicode对象,然后重新编码回 UTF-8。你可以做...

# coding=utf-8

data = '<input type="hidden" name="charset_test" value="€,´,€,´,水,Д,Є" />'
with open('myfile.htm', 'wb') as output:
    output.write(data)
于 2013-04-29T14:00:55.147 回答