导入含Unicode的CSV至SQLite显示问号(???)问题求助
我之前也碰到过一模一样的问题! Tamil字符全变成问号,折腾了好一阵才搞定,给你梳理几个关键排查点和解决办法:
可能的原因及对应解决方案
1. 导入时的编码选择没设对
DB Browser for SQLite导入CSV时,默认的“自动检测”编码经常掉链子——哪怕你文件确实是UTF-8,也可能被误识别。
- 操作细节:导入CSV的弹窗里,一定要手动把“字符编码”下拉框选为UTF-8,别依赖自动检测。
- 如果你的CSV文件带UTF-8 BOM(字节顺序标记),先把BOM去掉再导入:用Notepad++打开文件,选择“编码”→“转为UTF-8无BOM格式”,保存后再试。
2. 工具的显示编码配置出错
虽然SQLite本身用Unicode存储,但DB Browser的显示设置可能没跟上:
- 打开软件的「编辑」→「首选项」→「数据显示」,确认“字符编码”选项设为UTF-8。
- 要是你用命令行的
sqlite3工具导入,得确保终端编码是UTF-8,同时导入前执行编码指定命令:sqlite3 your_database.db .mode csv .encoding UTF-8 .import your_tamil_file.csv target_table
3. 表字段类型选错了
别用CHAR或VARCHAR类型存多语言文本,SQLite的TEXT类型才是专门为Unicode设计的。如果之前建表时用了其他类型,删掉表重建,把对应字段设为TEXT后再重新导入。
4. 确认CSV文件的真实编码
有时候你以为是UTF-8,实际可能不是:
- 用Notepad++打开文件,看右下角的编码标识(比如“UTF-8”“UTF-16 LE”),确保和你导入时选的编码完全匹配。如果是UTF-16,要明确选对应字节序的选项,别只选笼统的UTF-16。
补充一句:你说的没错,SQLite本身是完全支持Unicode存储的,所以问题肯定出在导入环节的编码不匹配或者工具显示的编码配置错误,和数据库存储本身无关。
内容的提问来源于stack exchange,提问作者Dan
相关产品推荐
相关产品推荐

