一次MySQL GBK编码的故障分析
最近有用户遇到MySQL GBK字符集的一个坑,我也是第一次遇到,网上也没看此类case,所以整理了故障分析报告分享给大家,供参考。
故障描述
用户描述说:在使用MySQL for .NET Connector的时候,MySQL客户端和服务端的字符集设置都是GBK的情况下,遇到中文输入中夹杂全角字符提示语法错误,不清楚为何被添加了转义符号,怀疑和全角字符有关。
从错误提示来看,有这几个表现:
- 字符串中间的全角单引号字符被加上了反斜杠转义;
- 字符串末尾的半角单引号字符被加上了反斜杠转义;
- 整个字符串被单引号包裹;
- 提示语法错误,而非数据格式相关错误。
故障分析
首先需要查看下 .net 驱动源码,确认以上1、2、3现象确实是驱动行为。
这里定义了需要转移哪些字符,其中包括全角和半角单引号了。
enum CharClass : byte
{
None,
Quote,