我想在python中从windows-1252转换为utf-8,我编写了以下代码:
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)
但我有个错误:
encoded = data.encode('Windows-1252').decode('utf-8')
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe8 in position 5653: invalid continuation byte
我尝试用这个元标记来转换html:
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
发布于 2021-01-03 18:50:06
你改错了方向。您希望从cp1252中解码,然后将其编码到UTF-8中。但是后者并不是真正必要的;Python已经为您做了。
当您解码某些内容时,输入应该是bytes
,结果是一个Python。将字符串写入已经隐式转换的文件,实际上也可以通过指定编码来进行读取。
此外,将整个文件读入内存是不优雅和浪费的。
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)
https://stackoverflow.com/questions/65553310
复制相似问题