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

读取CSV导入SQLite出现乱码、空格被替换为换行符问题如何解决?

问题原因

你观察到的Â字符和空格转换行问题均由编码不匹配导致:
你当前使用的windows-1250编码和CSV文件实际编码不符,文件本身为带非断空格的UTF-8编码:UTF-8编码下的非断空格(U+00A0)对应字节为0xC2 0xA0,用Windows-1250解码时0xC2会被解析为Â,0xA0会被识别为特殊空白符,最终出现转义错误变成换行。

修复方案

按以下步骤调整即可解决:

  • 把CsvOptions的encoding参数替换为utf-8-sig,该编码会自动处理UTF-8文件的BOM头和非断空格识别问题,是各类导出CSV最常用的兼容编码
  • 可选增加字段清洗逻辑,批量清除表头和内容中多余的换行、连续空白字符

修改后的完整代码如下:

import csv_to_sqlite
import sqlite3
import pandas as pd

# 替换编码为utf-8-sig解决字符识别错误
options = csv_to_sqlite.CsvOptions(typing_style='full', encoding='utf-8-sig')
input_file = ["./datasets/choco_flavors/flavors_of_cacao.csv"] 
csv_to_sqlite.write_csv(input_file, "flavors_of_cacao.sqlite", options)

con = sqlite3.connect("flavors_of_cacao.sqlite")
filter_data = pd.read_sql_query("SELECT * FROM flavors_of_cacao", con)

# 可选:批量清理所有字段的多余换行、连续空白
filter_data.columns = filter_data.columns.str.replace(r'\s+', ' ', regex=True).str.strip()
for col in filter_data.select_dtypes(include='object').columns:
    filter_data[col] = filter_data[col].str.replace(r'\s+', ' ', regex=True).str.strip()
前置验证方法

如果调整后仍有异常,可以先单独读取CSV验证编码正确性,避免重复写入SQLite浪费时间:

import pandas as pd
df = pd.read_csv("./datasets/choco_flavors/flavors_of_cacao.csv", encoding='utf-8-sig')
# 输出第一列表头确认正常后再执行转SQLite逻辑
print(df.columns[0])

如果输出结果为正常的Company (Maker-if known),则代表编码匹配无误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 01:27:02