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

只读权限下如何在Navicat/Power BI正确查看导出MySQL波斯字符

解决MySQL latin1库波斯字符乱码问题(只读权限场景)

问题本质

数据库字符集为latin1,但实际存储的是UTF-8编码的波斯字符字节(插入时未做正确编码转换,强行存入latin1字段)。客户端按utf8连接时,MySQL会将latin1编码的字节错误解析为UTF-8,导致乱码(示例ÙØ±ÙˆØ´就是典型的UTF-8字节被当作latin1解析后的结果)。

可行解决方案

1. 调整Navicat连接字符集

  • 打开目标数据库连接的属性,切换到高级标签页
  • 将字符集设置为latin1(而非要求的utf8)
  • 重新连接后,Navicat会直接将数据库返回的latin1字节按UTF-8渲染,波斯字符即可正常显示
  • 导出数据时,选择编码为UTF-8,避免二次乱码

2. 查询时手动转码(通用方案)

由于只有只读权限,无法修改库表配置,可通过MySQL内置函数在查询阶段完成编码修正:

-- 替换your_column_name和your_table_name为实际字段、表名
SELECT CONVERT(CONVERT(your_column_name USING latin1) USING utf8mb4) AS fixed_persian_text
FROM your_table_name;
  • 原理:先按latin1提取字段的原始字节流,再将其当作utf8mb4(兼容全UTF-8字符,包括波斯语)解析,还原正确文本
  • 此方法适用于Navicat、Power BI等所有支持自定义SQL的工具

3. Power BI数据源配置优化

  • 在Power BI中添加MySQL数据源时,进入高级选项
  • 在SQL语句框中输入上述转码查询,替代直接选择整张表
  • 加载数据后,波斯字符会正常显示;导出报表或数据时,确保编码为UTF-8

重要提示

  • 优先使用utf8mb4而非MySQL的utf8(后者是utf8mb3,仅支持基础多语言平面字符,无法覆盖部分特殊波斯字符)
  • 客户端要求的utf8(编码65001)是最终显示/导出的编码标准,连接数据库时的字符集需匹配存储的字节编码,或通过查询转码修正冲突

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 14:57:12