首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从windows-1252转换到python中的utf-8

从windows-1252转换到python中的utf-8
EN

Stack Overflow用户
提问于 2021-01-03 18:18:11
回答 1查看 6.6K关注 0票数 2

我想在python中从windows-1252转换为utf-8,我编写了以下代码:

代码语言:javascript
运行
复制
def encode(input_file, output_file):
        f = open(input_file, "r")
        data = f.read()
        f.close()

        # Convert from Windows-1252 to UTF-8
        encoded = data.encode('Windows-1252').decode('utf-8')
        with safe_open_w(output_file) as f:
            f.write(encoded)

但我有个错误:

代码语言:javascript
运行
复制
encoded = data.encode('Windows-1252').decode('utf-8')
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe8 in position 5653: invalid continuation byte

我尝试用这个元标记来转换html:

代码语言:javascript
运行
复制
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
EN

回答 1

Stack Overflow用户

发布于 2021-01-03 18:50:06

你改错了方向。您希望从cp1252中解码,然后将其编码到UTF-8中。但是后者并不是真正必要的;Python已经为您做了。

当您解码某些内容时,输入应该是bytes,结果是一个Python。将字符串写入已经隐式转换的文件,实际上也可以通过指定编码来进行读取。

此外,将整个文件读入内存是不优雅和浪费的。

代码语言:javascript
运行
复制
with open(input_file, 'r', encoding='cp1252') as inp,\
        open(output_file, 'w', encoding='utf-8') as outp:
    for line in inp:
        outp.write(line)
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65553310

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档