修复损坏的UTF-8编码

修复损坏的UTF-8编码

我正在修复一些糟糕的UTF-8编码。我目前正在使用PHP 5和MySQL。

在我的数据库中,我有一些不良编码的实例,如:î

  • 数据库排序规则是utf8_general_ci

  • PHP正在使用正确的UTF-8标头

  • Notepad ++设置为使用不带BOM的UTF-8

  • 数据库管理在phpMyAdmin中处理

  • 并非所有重音字符都被破坏

我需要某种功能来帮助我将î,ÃÂ,ü和其他类似的实例映射到正确的重音UTF-8字符。


PIPIONE
浏览 799回答 3
3回答

大话西游666

我不得不试图在过去“修复”一些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投诉,这将使这很容易(希望如此)
打开App,查看更多内容
随时随地看视频慕课网APP