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

如何将SQLite数据导入MySQL,解决波斯语数据导入后显示为问号的问题

解决SQLite波斯语数据导入MySQL显示为问号的问题

这个问题的核心是全链路字符集不统一,你需要按以下步骤逐一配置,全程使用utf8mb4字符集(MySQL自带的utf8为阉割版,仅支持3字节字符,无法完整覆盖波斯语等非拉丁字符,请勿使用):

1. 配置MySQL端字符集

  • 数据库级别设置:
    新建库时指定字符集:
    CREATE DATABASE 你的数据库名 CHARACTER SET utf8mb4 COLLATE utf8mb4_persian_ci;
    已创建的库修改字符集:
    ALTER DATABASE 你的数据库名 CHARACTER SET utf8mb4 COLLATE utf8mb4_persian_ci;
  • 表级别设置:
    存储波斯语的表统一转换字符集:
    ALTER TABLE 你的表名 CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_persian_ci;
  • 字段级别设置:
    仅部分字段存储波斯语时可单独修改,示例:
    ALTER TABLE 你的表名 MODIFY COLUMN 字段名 字段类型 CHARACTER SET utf8mb4 COLLATE utf8mb4_persian_ci;
  • 全局验证:
    执行SHOW VARIABLES LIKE 'char%';检查当前会话字符集,确保character_set_client、character_set_connection、character_set_results均为utf8mb4,临时修改可执行SET NAMES utf8mb4;;永久修改需编辑MySQL配置文件(Linux为my.cnf,Windows为my.ini):

    [mysqld]
    character-set-server = utf8mb4
    collation-server = utf8mb4_persian_ci
    [client]
    default-character-set = utf8mb4
    配置修改后重启MySQL服务生效。

2. 确保SQLite导出的CSV文件编码正确

SQLite默认使用UTF-8存储数据,导出CSV时必须明确指定编码为UTF-8(优先选择UTF-8无BOM格式),导出后可直接用文本编辑器打开CSV,确认波斯语内容显示正常无乱码再进行导入操作。

3. CSV导入时指定字符集

  • 用LOAD DATA命令导入的示例:
    LOAD DATA INFILE '/本地路径/你的数据文件.csv'
    INTO TABLE 你的表名
    CHARACTER SET utf8mb4
    FIELDS TERMINATED BY ',' ENCLOSED BY '"'
    LINES TERMINATED BY '\n'
    IGNORE 1 ROWS;
    
  • 用Navicat、DBeaver等图形化工具导入时,需在导入向导的编码选择项中明确选择UTF-8,不要使用系统默认编码。

4. 直接执行SQL插入的场景处理

  • 执行插入语句前,先在当前数据库会话执行SET NAMES utf8mb4;,确保连接字符集正确后再执行插入操作。
  • 用Python、Java等脚本做数据迁移的场景,需要在创建数据库连接时明确指定编码为utf8mb4,比如Python的pymysql连接需添加参数charset='utf8mb4'。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 16:45:04