一个站有可能经历gb(gbk,big5)到utf8的转换过程,其中会遇到很多的问题。站点太庞大了怎么办呢,只能一步步来了。要是能在极少改动前端代码的情况下,先完成数据的转换将会使整件事情容易得多。经过几天测试终于发现,Mysql以utf8存储gbk输出是可以实现的。mysql4.1后都有个特性,可以指定当前客户端连接所使用的字符集,mysql默认都是latin1,或由mysql server端配置的字符集进行连接校对。我使用utf8_general_ci来创建字段。 DB: SQL代码: PHP: 存储操作指定使用utf8字符集进行连接校对,读取操作指定使用gbk字符集进行连接校对。 PHP代码: 需要注意几点: 1. mysql必须把gbk,gb,utf8等字符集编译进去。 2. 入库的数据内容必须保证是最正确的UTF8编码。 3. 存储和读取操作要指定正确的字符集进行连接校对。 要是前端代码操作数据入库不能以UTF8进行,则需要对字符进行转码了。(例如用AJAX提交的数据便是正确的UTF8,这时是不用转换的。) 因为mb_string是PHP所支持字符最全的,而iconv比它稍差一点,mb_string并不能完全支持一些特殊字符的转码,所以目前为止都没有完美的转码方法。 再次对mb_string和iconv进行比较: mb_string: 1. 所支持字符最全 2. 内容自动识别编码,不需要确定原来字符的编码,但是执行效率比iconv差太多 3. $content = mb_convert_encoding($content, "UTF-8", "GBK,GB,BIG5");(顺序不同效果也有差异) iconv: 1. 所支持字符不全 2. 需要确定原来字符的编码,但在确定编码的情况下执行效率比mb_convert_encoding高 3. $content = iconv("GBK", "UTF-8", $content);
推荐整理分享Mysql以utf8存储gbk输出的实现方法提供,希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!
mysql连接过多和死掉以及拒绝服务的解决方法 mysql连接过多导致总是死掉,后来网上搜索发现此文自Mysql5.x的某个版本之后,Mysql的自动关闭空闲连接的特性修改了,如果一个连接空闲到超时时间(
在MySQL数据库中复位根用户的密码的方法 如果你从未为MySQL设置根用户密码,服务器在以根用户身份进行连接时不需要密码。但是,建议你为每个账户设置密码。如果你以前设置了根用户密码
mysql数据库查询优化 mysql效率第1/3页 提高MySQL查询效率的三个技巧小结MySQL由于它本身的小巧和操作的高效,在数据库应用中越来越多的被采用.我在开发一个P2P应用的时候曾经使用MySQL来保