mysql – 在UTF8和Latin1表中将iso-8859-1数据转换为UTF-8
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了mysql – 在UTF8和Latin1表中将iso-8859-1数据转换为UTF-8,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2088字,纯文字阅读大概需要3分钟。
内容图文
![mysql – 在UTF8和Latin1表中将iso-8859-1数据转换为UTF-8](/upload/InfoBanner/zyjiaocheng/899/5e897de15cad4010a0735e1201c4cb93.jpg)
问题摘要:
在尝试将具有mysql数据库的站点从latin1转换为utf8时,尽管确保字符集在系统范围内都是utf8,但某些特殊字符无法正确显示.
问题详情:
这是一个常见问题.但我似乎有一个额外的复杂性.
多年前,一个不知名的开发人员(我),将一个网站与MySQL放在一起.一些表使用latin1_swedish_ci和utf8_general_ci设置.所有输入/显示都是通过iso-8859-1 charset页面完成的.
现在,我的任务是将所有这些数据转换为utf-8,从而最终使编码均匀化.但是,我在两个实例中都遇到了许多特殊字符的问题(即:ü).这些字符似乎无法在UTF-8页面上正确显示.它们显示为 .相反当在mysql查询浏览器中查看utf8表中的数据时,正确输入的utf8’d’u’显示为一些特殊字符,而错误的latin1’u’显示为应显示在页面上.但事实并非如此.
我尝试过很多东西:
> Percona脚本:https://github.com/rlowe/mysql_convert_charset
>将col转换为二进制,然后转换为utf8
>将utf8表转换为拉丁语,然后重复上述过程
似乎没有什么能够治愈这些数据.
倾倒整个数据库并且重要的并不是一个可行的选择,因为它现在是一个巨大的数据库,并且停机时间受到限制.
更新(2013年10月22日)
我已经采取了@deceze建议,并根据http://kunststube.net/frontback/审查了我的所有内容编码区域.我确实找到了一些我仍然在latin1中传递/编码数据的地方.所以,我现在把它全部改为UTF-8.但是,数据仍然在特定字段中显示不正确.在utf8中的表中(没有列具有隐式编码),field1在latin1中.我可以通过运行以下正确显示文本来确认这一点:
select convert(cast(convert(field1 using latin1) as binary) using
utf8) from my table WHERE id = 1
这将把Hahnemühle转换为Hahnemühle.
在field2中,数据显示为不同的(未知)编码.上面的查询,当在field2上使用时,将Hahnem�hle转换为Hahnem hle.我已经通过http://dev.mysql.com/doc/refman/5.5/en/charset-charsets.html上的所有字符集替换了latin1,但似乎没有一个正确地吐出数据.
解决方法:
您可以尝试使用mysqldump从ISO-8859-1转换为utf-8:
mysqldump --user=username --password=password --default-character-set=latin1 --skip-set-charset dbname > dump.sql
chgrep latin1 utf8 dump.sql (or when you prefer sed -i "" 's/latin1/utf8/g' dump.sql)
mysql --user=username --password=password --execute="DROP DATABASE dbname; CREATE DATABASE dbname CHARACTER SET utf8 COLLATE utf8_general_ci;"
mysql --user=username --password=password --default-character-set=utf8 dbname < dump.sql
内容总结
以上是互联网集市为您收集整理的mysql – 在UTF8和Latin1表中将iso-8859-1数据转换为UTF-8全部内容,希望文章能够帮你解决mysql – 在UTF8和Latin1表中将iso-8859-1数据转换为UTF-8所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。