3 回答
TA贡献1817条经验 获得超14个赞
我不得不试图在过去“修复”一些UTF8破坏的情况,不幸的是,这从来都不容易,而且往往是不可能的。
除非你能确切地确定它是如何被打破的,并且它总是以完全相同的方式被打破,否则很难“消除”这种伤害。
如果您想尝试撤消损坏,最好的办法是开始编写一些示例代码,在这些代码中您尝试对mb_convert_encoding()调用进行多种变化,以查看是否可以找到“from”和“to”的组合。修复您的数据。最后,由于所涉及的痛苦程度,通常最好不要担心修复旧数据,而只是解决未来的问题。
但是,在执行此操作之前,您需要确保首先修复导致此问题的所有内容。您已经提到您的数据库表格排序和编辑器设置正确。但是有更多地方需要检查以确保所有内容都是正确的UTF-8:
确保您以UTF-8的形式提供HTML:
header(“Content-Type:text / html; charset = utf-8”);
将PHP默认字符集更改为utf-8:
ini_set(“default_charset”,'utf-8');
如果您的数据库始终没有在utf-8中进行通话,那么您可能需要在每个连接的基础上告诉它以确保它处于utf-8模式,在MySQL中您通过发出以下命令来实现:
charset utf8
您可能需要告诉您的网络服务器始终尝试以UTF8进行通话,在Apache中,此命令是:
AddDefaultCharset UTF-8
最后,您需要始终确保使用正确的UTF-8投诉的PHP函数。这意味着始终使用mb_ *样式的“多字节识别 ”字符串函数。它还意味着在调用htmlspecialchars()等函数时,在末尾包含相应的'utf-8'charset参数,以确保它不会错误地编码它们。
如果您错过了整个过程中的任何一步,编码可能会被破坏并出现问题。一旦你进入了做utf-8的'凹槽',这一切都成了第二天性。当然,PHP6应该是来自getgo的完全unicode投诉,这将使这很容易(希望如此)
添加回答
举报