首页 / PHP / php-utf8中“混乱字符”列表
php-utf8中“混乱字符”列表
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php-utf8中“混乱字符”列表,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2462字,纯文字阅读大概需要4分钟。
内容图文
我的一位客户有一个网站,这个网站完全被托管公司强加于整个数据库中的一个字符集.以前我们在字符集方面遇到了麻烦,但是现在这只是一部戏剧!
到目前为止,我已经将charset = utf-8添加到页面内容类型中,并将mysql连接的字符集设置为utf8.现在该替换所有字符了.到目前为止,我发现的是:
?? = ?
?? = ?
?? = é
像这样更新数据库内部的数据:
UPDATE table SET `fieldname` = REPLACE(`fieldname`, '??', '?');
现在,我只需要查找混乱的Alle字符的完整列表.我尝试了一个MySQL查询来搜索字段LIKE’%Ã%’,但这返回了数据库中的所有记录.
Google在遇到麻烦的其他人的一些主题中也只显示了几个字符(大多数是上面的3个),但是似乎找不到这些字符的完整列表(或者至少是最常见的).并替换我客户的所有数据.
作为回报,如果有人知道这样的位置或能够完成我的列表,那么我将创建一个包含这些字符的页面来帮助他人(除非已经有一个列表,我当然不知道该列表).
//编辑:
它适用于最常见的欧洲字符,例如éè,áàä,öóò,ï,ü和ringel-S(德语double S).对于诸如ñ或ã这样的跨度符号来说,并不是很多,但是如果它们在列表中的某个位置,那将是非常值得赞赏的.
//编辑2:
我使用本文第1部分中的2个ALTER查询更新了MySQL数据库和表:http://developer.loftdigital.com/blog/php-utf-8-cheatsheet.到目前为止,我还没有使用过mb_函数,并且似乎没有进行任何MB配置.
标头在文件中都设置为utf-8(我仍然必须检查一些ajax脚本的标头,不确定是否需要这样做,但这不会造成危害).并且所有文件都保存为UTF8,没有BOM.通过将字符集设置为utf-8,也可以更新PHPFreakMailer.
够糟糕的是,我仍然有这些奇怪的角色.我不是在想他们会自己消失,但至少值得这样:-)那么,我应该采取的最后一步是什么?继续使用REPLACE查询并手动更改所有奇怪的字符?
提前致谢!
解决方法:
这有点疯狂;您认为“ö”位于哪个字符集中?
看起来这实际上是正确的UTF-8序列(因为它是两个字节),您只是将其显示为ISO-8559-1.
编辑:
根据您的评论,我认为以下情况正在进行:
我认为(但实际上不是100%肯定)正确的UTF-8二进制序列存储在数据库中.但是由于该表被标记为ISO-8559-1,因此您要求自动转换字符集.因此,它认为它是ISO-8559-1(看起来像¶),但随后尝试将其转换为UTF-8.
如果strlen(‘Ã’)是4,而不是2,您应该能够验证这一点.如果长度确实是2,则您的浏览器编码会以某种方式破坏.
要解决此问题,请不要将MySQL设置为对字符进行编码.
选项2
数据也可以在表中进行“双重编码”.要检查这一点,只需检查数据库中的字符串长度即可.如果’ö’是4个字节长,这就是问题所在.
在这种情况下,我的建议是不要尝试制作大的“混乱人物”地图.您应该只能够“ utf8_decode”字符串.通常,此函数将输出ISO-8559-1字符串,但是在您的情况下,它应该是原始的有效UTF-8字符串.
我希望这行得通!
编辑2
好吧,我认为发生的事情是有效的方法2.用简单的(php)术语来说:
$output = utf8_encode(utf8_encode('string'));
因此,一个utf8_decode()应该足够了.
在运行迁移脚本之前,请先进行测试:)
内容总结
以上是互联网集市为您收集整理的php-utf8中“混乱字符”列表全部内容,希望文章能够帮你解决php-utf8中“混乱字符”列表所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。