Flask读取CSV文件触发charmap codec解码错误如何解决
错误产生原因
- Windows环境下Python的
open()函数未手动指定编码参数时,会默认使用系统自带的区域编码(即报错里提到的charmap编码,常见为cp1252、GBK等),而你的cafe-data.csv文件实际以UTF-8编码保存,文件中存在默认编码无法映射的特殊字符(如非英文文本、特殊符号、emoji等),解码过程字节匹配失败就会抛出该Unicode解码错误。 - 额外注意:你贴出的代码中
with open(...)行末尾缺失了必填的冒号,即使解决编码问题运行时也会触发语法错误。
修复方案
打开文件时显式指定和文件实际存储匹配的UTF-8编码,同时补全语法缺失的冒号即可,修改后的完整代码如下:
@app.route('/cafes') def cafes(): with open('cafe-data.csv', newline='', encoding='utf-8') as csv_file: csv_data = csv.reader(csv_file, delimiter=',') list_of_rows = [] for row in csv_data: list_of_rows.append(row) return render_template('cafes.html', cafes=list_of_rows)
如果修改后仍提示编码相关错误,可将编码参数替换为utf-8-sig,适配带BOM头的UTF-8格式CSV文件,这类文件通常由Windows版Excel直接导出生成。
内容的提问来源于stack exchange,提问作者Yilin Zuo
相关产品推荐
相关产品推荐

