本文转自YashanDB官网,具体内容请见https://www.yashandb.com/newsinfo/7352675.html?templateId=1718516
问题现象
客户端yasql配置字符集为GBK,服务端yasdb配置字符集为UTF8,之后执行语句:
会发现:
期望是两个都失败(强检测字符集),或者两个都成功(弱检测字符集,直接将字符当做数据存储,不关心数据内容是什么),而不是一个成功一个失败。
问题的风险及影响
SQL语句执行失败。
问题影响的版本
所有版本。
问题发生原因
李强虽然是UTF8编码,但是在yasql按照GBK解析成功了(也是乱码,但是只要能等价转换就没有问题)。但是李不行,因为字符长度不对。
解决方法及规避方式
修改字符集到bash、yasql、yasdb的字符集一致。
问题分析和处理过程
看UTF8编码和GBK编码的原理,以及命令行、客户端、数据库都是如何处理字符的。
经验总结
尽量不要将命令行、客户端、数据库这三者的字符集配成不相同的。