Python中如何解决编码问题?
我计算机本地有一个 CSV 文件,表头汉字编码格式是 ASCII,我用 spider(pyton 3.6)的 pandas 读取的时候显示 UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0xc9 in position 3: invalid continuation byte
问一下该怎么解决?
Python中如何解决编码问题?
csv 也是文本文件,要么手动处理成 utf-8 编码的再读取,要么用 pandas read_csv 时指定 encoding
核心就一句话:明确指定编码,统一使用UTF-8。
绝大多数编码问题都源于读写文件或处理字符串时,Python不知道(或猜错了)你用的编码。在Python 3里,字符串是Unicode,但和字节打交道时(比如读文件、网络数据),必须转码。
1. 读写文件:用encoding参数
这是最常见的情况。打开文件时,永远显式指定encoding='utf-8'。
# 正确做法:写入和读取都指定UTF-8
with open('myfile.txt', 'w', encoding='utf-8') as f:
f.write('你好,世界!')
with open('myfile.txt', 'r', encoding='utf-8') as f:
content = f.read()
print(content) # 正常输出:你好,世界!
如果文件是其他编码(比如GBK),就把utf-8换成gbk。
2. 处理网络数据或未知来源的字节
收到字节串(bytes)时,用.decode()转成字符串;发送时用.encode()转回字节串。
# 假设从某处得到一个GBK编码的字节流
byte_data = b'\xc4\xe3\xba\xc3' # 这是“你好”的GBK字节
try:
text = byte_data.decode('gbk') # 解码
print(text) # 输出:你好
except UnicodeDecodeError as e:
print(f"解码失败:{e}")
# 可以尝试其他编码,如'utf-8', 'latin-1', 或忽略错误
# text = byte_data.decode('utf-8', errors='ignore')
3. 处理命令行或系统编码
在Windows命令行等环境,系统默认编码可能不是UTF-8。可以设置环境变量PYTHONUTF8=1(Python 3.7+),或在代码开头设置:
import sys
import io
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
总结:统一用UTF-8,打开文件别忘加encoding参数。
reload(sys)
sys.setdefaultencoding(‘utf8’)
python3 已经没有这个函数了:)
我用比较笨的方法,直接指定编码方式,open,然后 readlines,list 再转化成其他格式。。占个座看看有没有好的方法。
iconv 一条命令的事情,少写点代码(
谢谢 chenstack,搞定!同时也谢谢楼上两位
你说的汉字编码是 GB 吧,ASCII 不支持中文。

