分享一个解决MySQL写入中文乱码的方法
分享一个解决MySQL写入中文乱码的方法
之前有发帖请教过如何解决MySQL写入中文乱码的问题。但没人会,或者是会的人不想回答。搜索网上的答案并尝试很多次无效,所以当时就因为这个乱码问题搁浅了一个软件很多日子。
直到昨天又一次互联网搜索,尝试很多次后,终于解决了乱码问题,再一鼓作气完成了软件的全部功能。
喜悦之余,也想到肯定有很多人被这个问题所困扰,他们的心情我是理解的。所以我决定分享下这个方法。
1、首先在连接MySQL之后,执行SQL语句 (连接句柄, “set names 'GBK'”),这样才能读取库名、表名、记录数据时显示中文。当然也可以 执行SQL语句 (连接句柄, “set names 'utf8'”),然后读取数据出来后,转换UTF8编码为ANSI编码即可(转换模块、源码多了去,自己找)。
2、原本以为第一条执行后能输出中文了,输入中文应该没问题。但就是输入中文有问题,原因就在,使用MySQL支持库的创建库和创建表命令创建后的库表,默认都是拉丁字符集(当然是我这里发现的情况,不是所有情况都这样)。所以要这样:
创建库之后,执行SQL语句 (连接句柄, “ALTER DATABASE `库名` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;”)
创建表之后,执行SQL语句 (连接句柄, “ALTER TABLE `表名` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;”)
这样就可以正常输入中文了。
3、由于写入记录时使用单引号包括数据,所以数据中如果有单引号就必须转义,删除记录的条件语句也要求转义。转义的处理方法:
字段值 = 子文本替换 (子文本替换 (子文本替换 (字段值, “\'”, “\|”, , , 真), “'”, “\'”, , , 真), “\|”, “\\\'”, , , 真)