我有一个用utf-8编码的HTML文件。我想把它输出到一个用utf-8编码的文本文件。这是我正在使用的代码:
import codecs
IN = codecs.open("E2P3.html","r",encoding="utf-8")
codehtml = IN.read()
#codehtml = codehtml.decode("utf-8")
texte = re.sub("<br>","\n",codehtml)
#texte = texte.encode("utf-8")
OUT = codecs.open("E2P3.txt","w",encoding="utf-8")
OUT.write(texte)
IN.close()
OUT.close()
正如您所看到的,我尝试过使用'decode'和'codecs'。这些都不起作用,我的输出文本文件默认为Occidental(Windows-1252),一些实体变得乱七八糟。 我在这里做错了什么?
答案 0 :(得分:1)
当您使用codecs
模块打开UTF-8文件时,文件内容会自动解码为Unicode字符串,因此您不能再尝试解码它们。
写文件时也是如此;如果使用codecs
模块编写它,您传递的Unicode字符串将自动编码为您指定的任何编码。
为明确表示您正在处理Unicode字符串,使用Unicode文字可能更好一点,如
texte = re.sub(u"<br>", u"\n",codehtml)
虽然在这种情况下并不重要(也可以写成
)texte = codehtml.replace(u"<br>", u"\n")
因为你实际上并没有使用正则表达式。)
如果应用程序无法识别UTF-8文件,则可能有助于使用BOM (Byte Order Mark)保存它(通常不鼓励,但如果应用程序无法识别UTF-8文件,则为值得一试):
OUT = codecs.open("E2P3.txt","w",encoding="utf-8-sig")