SUPERSET中文乱码终极解决方案,小白也能学会!

吉云

今天跟大家聊聊我解决 Superset 中文乱码问题的一些实践经历,希望能帮到遇到同样问题的朋友。

我在 Superset 上面跑一些查询,结果发现只要查询条件里带中文,那日志里直接就给我打一堆问号“???”,查出来的数据压根儿不对,当时就懵。

第一反应是后端处理数据的时候是不是哪里出问题。 于是我就开始各种排查后端代码,看看是不是字符编码没设置对,或者是数据在传输过程中被搞乱。结果搞半天,发现后端没啥问题,数据都是好好的。

SUPERSET中文乱码终极解决方案,小白也能学会!

后来又试着导出 CSV 文件,这下更惨,导出来的文件用 Excel 打开一看,中文全成乱码,完全没法看。

没办法,只能硬着头皮在网上各种搜资料。

我尝试去改 `superset/*`(或者 `superset_*`,具体看你的版本),想着是不是改一下默认编码就好。

我在配置文件里加上下面这玩意儿:

python

import sys

SUPERSET中文乱码终极解决方案,小白也能学会!

from urllib import parse

* = open(*(), mode='w', encoding='utf8')

SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://root:yourpassword@127.0.0.1:3306/superset?charset=utf8'

想着强制指定一下数据库连接的字符集,结果重启 Superset 之后,还是不行,中文依旧乱码。

后来我发现,在添加 MySQL 数据库连接的时候,那个 URL 里面也得指定字符集才行。

SUPERSET中文乱码终极解决方案,小白也能学会!

我就跑到 Superset 的 Database 连接设置里,找到我那个 MySQL 连接,把连接 URL 改成这样:

`mysql+pymysql://user:password@host:port/database?charset=utf8`

加个`?charset=utf8`, 重新连接,你猜怎么着?还是不行!

我发现导出 CSV 乱码这个问题,得改编码方式。

再次打开`superset/*`,找到关于 CSV 导出的配置,把编码改成 `utf-8-sig`。

python

SUPERSET中文乱码终极解决方案,小白也能学会!

CSV_EXPORT = {

'encoding':'utf_8_sig'

据说这个 `utf-8-sig` 可以在 Excel 里正确显示中文。改完之后,重启 Superset,再导出 CSV,这下终于正常!

解决 Superset 中文乱码问题,真的是一个一个坑去填。先是排查后端,然后改配置文件,改数据库连接 URL,还得改 CSV 导出编码。

SUPERSET中文乱码终极解决方案,小白也能学会!

希望我的这些经验能帮到大家,少走一些弯路。

免责声明:由于无法甄别是否为投稿用户创作以及文章的准确性,本站尊重并保护知识产权,根据《信息网络传播权保护条例》,如我们转载的作品侵犯了您的权利,请您通知我们,请将本侵权页面网址发送邮件到qingge@88.com,深感抱歉,我们会做删除处理。

目录[+]