python 转换编码:LookupError: 未知编码:ansi

13 投票
2 回答
104914 浏览
提问于 2025-04-17 21:29

因为我的cdv文件是用utf-8编码的,所以用Excel打开的时候会出现乱码。然后我想把它转换成标准的ANSI编码,但却遇到了这个错误:

代码:

import chardet

def convertEncoding(from_encode,to_encode,old_filepath,target_file):
    f1=file(old_filepath)
    content2=[]
    while True:
        line=f1.readline()
        content2.append(line.decode(from_encode).encode(to_encode))
        if len(line) ==0:
            break

    f1.close()
    f2=file(target_file,'w')
    f2.writelines(content2)
    f2.close()



convertFile = open('4321.csv','r')
data = convertFile.read()
print chardet.detect(data)
if chardet.detect(data)['encoding']=='utf-8':
    convertFile.close()
    convertEncoding(chardet.detect(data)['encoding'], "ansi", "4321.csv", "4321_bak.csv")

错误:

{'confidence': 0.99, 'encoding': 'utf-8'}
Traceback (most recent call last):
  File "/Users/allenlee/Desktop/convert/convert.py", line 24, in <module>
    convertEncoding(chardet.detect(data)['encoding'], "ansi", "4321.csv", "4321_bak.csv")
  File "/Users/allenlee/Desktop/convert/convert.py", line 8, in convertEncoding
    content2.append(line.decode(from_encode).encode(to_encode))
LookupError: unknown encoding: ansi
[Finished in 0.1s with exit code 1]

谢谢你的关心。

2 个回答

4

好的,我找到了答案。感谢 @falsetru

#coding:utf-8

import chardet

def convertEncoding(from_encode,to_encode,old_filepath,target_file):
    f1=file(old_filepath)
    content2=[]
    while True:
        line=f1.readline()
        content2.append(line.decode(from_encode).encode(to_encode))
        if len(line) ==0:
            break

    f1.close()
    f2=file(target_file,'w')
    f2.writelines(content2)
    f2.close()

convertFile = open('1234.csv','r')
data = convertFile.read()
convertFile.close()

convertEncoding(chardet.detect(data)['encoding'], "utf-8", "1234.csv", "1234_bak.csv")
11

在Python中没有叫做ansi的编码方式,详细信息可以查看这个链接:标准编码

你可以从下面的链接选择合适的编码方式:标准编码

撰写回答