Home > IT > The Encoding Problem in MySQL

The Encoding Problem in MySQL

分享家:Addthis中国

前段时间将一个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.
懒得留言?那留下您的掌印吧。
Categories: IT Tags:
  1. October 10th, 2008 at 15:53 | #1

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

  1. No trackbacks yet.

:D 8) :down: 8O :!: :halo: :evil: :heart: :kiss: :lol: :money: :mrgreen: :x :| :pirate: :?: :oops: :roll: :P :( :) :o :up: :vangry: :twisted: ;) :? :cry:

也许您会觉得ReCAPTCHA验证码很繁琐,会认为他和其他所有的验证码一样让你厌烦。那请点击这里,您会了解到ReCAPTCHA为人类文化的传承做出了多大的贡献。请您也为人类知识的保存和传递也出一份力吧,谢谢!


Additional comments powered by BackType

    Posts Nav.