You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

二进制模式写入CSV文件时出现Ascii编码错误求助

解决ASCII编码无法写入CSV的问题

嘿,这个编码问题我之前处理过好几次,咱们来捋清楚怎么解决:

问题根源

你遇到的‘Ascii’编码无法对位置152-153的字符进行编码错误,本质是:

  • 当你用二进制模式写入CSV时,Python默认会尝试用ASCII编码转换字符串,但你的数据里包含非ASCII字符(比如示例中的\x80\x99,这是Windows-1252编码的右单引号’)
  • CSV模块本身设计为在文本模式下工作,二进制模式反而会绕开它的编码处理逻辑,导致编码冲突

最佳解决方案:文本模式+指定UTF-8编码

这是最稳妥的方式,直接让CSV模块处理编码和格式细节:

import csv

# 你的原始数据
data = [
    [None, u'https://aaa.com/p/cat.do?tags=|5555|4444|8888&zzz;A=3', u'00 .00.00.000, 00.00.00.000', u'25359725', u'2018-03-06 18:01:18', u'DC01F54GH8D.aa201', None, 1814498434, 765651, u'2018-03-12 18:01:18', 168, 0, u'2018-03-12 18: 32:08.428032'],
    [None, u'https://aaa.com/p/cat.do?tags=|5555|4444|8888&zzz;A=\x80\x99s+Day+', u'00.00.00.000, 00.00.00.000', u'10707456']
]

# 用文本模式打开文件,指定UTF-8编码,newline=''是CSV模块推荐的参数(避免换行符混乱)
with open('output.csv', 'w', encoding='utf-8', newline='') as csv_file:
    writer = csv.writer(csv_file)
    writer.writerows(data)

关键点说明:

  • encoding='utf-8':UTF-8兼容所有语言的字符,彻底解决非ASCII编码问题
  • newline='':让CSV模块自己处理换行符,避免不同操作系统下的格式错误
  • 文本模式下,CSV模块会自动处理字符串到字节的转换,不需要你手动编码

备选方案:二进制模式下手动编码(不推荐)

如果因为特殊需求必须用二进制模式,你需要手动把所有字符串转换成UTF-8字节:

import csv

def convert_item(item):
    if isinstance(item, unicode):  # Python 2用unicode,Python 3替换为str
        return item.encode('utf-8')
    elif item is None:
        return b''  # 用空字节表示None值
    else:
        # 非字符串类型先转成字符串再编码
        return unicode(item).encode('utf-8')  # Python 3替换为str(item).encode('utf-8')

# 把所有数据转换为字节类型
binary_data = [[convert_item(cell) for cell in row] for row in data]

with open('output.csv', 'wb') as csv_file:
    writer = csv.writer(csv_file)
    writer.writerows(binary_data)

注意:

这个方法需要你手动处理所有数据类型的转换,容易出错,除非必要否则不建议使用。

额外处理:修复乱码字符

如果你的数据里有类似\x80\x99的乱码(实际是Windows-1252编码的特殊字符),可以先把它转换成标准UTF-8:

# 假设原字符串是Windows-1252编码(Python 2示例)
original_str = u'A=\x80\x99s+Day+'
# 先编码回字节,再用UTF-8解码
corrected_str = original_str.encode('windows-1252').decode('utf-8')
# 现在corrected_str就是标准的"A=’s+Day+"

内容的提问来源于stack exchange,提问作者ABK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 10:06:26