在Python中使用编解码器编码的正确方法是什么?

2024-10-05 14:23:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个用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'。这两种方法都不起作用,我的输出文本文件默认为occidential(Windows-1252),一些实体变得乱七八糟。 我做错什么了?在


Tags: 文件in编码closehtmlopenoututf
1条回答
网友
1楼 · 发布于 2024-10-05 14:23:07

使用codecs模块打开UTF-8文件时,文件的内容会自动解码为Unicode字符串,因此不能再次尝试解码。在

在编写文件时也是如此;如果使用codecs模块编写它,则传递的Unicode字符串将自动编码为您指定的任何编码。在

为了明确表示您正在处理Unicode字符串,最好使用Unicode文本,如

texte = re.sub(u"<br>", u"\n",codehtml)

虽然在这种情况下并不重要(也可以写为

^{pr2}$

因为您实际上没有使用正则表达式)。在

如果应用程序无法识别UTF-8文件,则可以使用BOM (Byte Order Mark)保存该文件(这通常是不可取的,但如果应用程序无法识别UTF-8文件,则值得一试):

OUT = codecs.open("E2P3.txt","w",encoding="utf-8-sig")

相关问题 更多 >