The Encoding Problem in MySQL
前段时间将一个UTF-8编码的MySQL数据库的数据转到一个GBK编码的MySQL数据库里
PHP脚本很早就写好了,转换出来也没出现中文乱码,而且运行很正常。
今天朋友把我的脚本拿去改动后,就出问题了,中文转换好后竟然是乱码了。
看看代码,设定编码的
SET NAMES 'GBK'
和
SET NAMES 'UTF-8'
也没写错,为什么编码就问题呢。
搞了好久,无果,后来仔细查看代码的主要区别。因为效果需要,我们需要在两个不同的数据库之间切换操作。我的原来的操作方法:连接数据库A,设定UTF-8,提取数据,断开数据库A,连接数据库B,设定GBK,装入数据,断开数据库B……如此往复。
也许我同学希望通过减少次数提高运行效率。他的方法:连接MySQL,选择数据库A,设定UTF-8,提取数据,选择数据库B,设定GBK,装入数据,……如此往复,最后断开MySQL。
但是问题就出在这个地方了,SET在对该连接的属性进行设置的时候,对于相同的属性设置的时候只对首次命令才执行。这样子就导致整个操作过程,只执行了
SET NAMES 'UTF-8'
,导致了编码没有正常切换引起来乱码问题……
最后把操作模式改成我原来的方式,果然编码问题解决了!Oh,yeah!
说了这么多废话,也是就是希望这个信息对大家有帮助:MySQL对于单连接的属性设定是一次性的,不能随便修改的,其实这也是对数据一种保护。比方说:如果在操作一个数据库的时候无意间修改了编码或者是权限,后患无穷~
You don't feel like leaving comments? Please leave your palm-print.
懒得留言?那留下您的掌印吧。
懒得留言?那留下您的掌印吧。
Push







编码转换总是让人很不爽的事