(此文档仅供参考)
问题
数据集里面通过sql给数值加单位m³,之后保存,再次打开变成m?,或者图形里面设置坐标轴名称m³,之后保存,再次打开有时候会变成m?,有时候是正常的
原因分析
知识库使用的字符集编码不支持保存这种特殊符号,设置的时候正常是因为字符是从缓存中读取的,但是设置好之后,m³字符要持久化存储到知识库表中,由于知识库的编码(如GBK)不支持特殊字符,“³”字符入库后的数据已经是"?"了,当系统读取不到缓存,需要重新从知识库通过SQL查询,查出来的数据就包含有"?",因此界面之前设置的“³”就会变成“?”。
验证方法
关闭资源,然后在smartbi中点击清空缓存后,重新打开资源查看之前设置的“³”,如果显示的是“?”,则说明知识库不支持该字符。
扩展
常见的GBK编码不支持的字符:
1、数字上标(如²、³)
2、‱
3、©
4、各种emoji表情符号
解决方案
需要支持正常存储这类特殊符号的知识库(存入后能正常select查询出不乱码的字符),比如mysql数据库可以使用utf8mb4编码(config界面编码仍然选择UTF-8,utf8mb4编码支持的字符比utf8更多),也就是对于mysql的知识库,需要新建一个使用utf8mb4编码的库,然后空库升级恢复知识库再去修改设置。