为了账号安全,请及时绑定邮箱和手机立即绑定

修复损坏的UTF-8编码

修复损坏的UTF-8编码

PIPIONE 2019-08-06 14:31:37
修复损坏的UTF-8编码我正在修复一些糟糕的UTF-8编码。我目前正在使用PHP 5和MySQL。在我的数据库中,我有一些不良编码的实例,如:î数据库排序规则是utf8_general_ciPHP正在使用正确的UTF-8标头Notepad ++设置为使用不带BOM的UTF-8数据库管理在phpMyAdmin中处理并非所有重音字符都被破坏我需要某种功能来帮助我将î,ÃÂ,ü和其他类似的实例映射到正确的重音UTF-8字符。
查看完整描述

3 回答

?
大话西游666

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投诉,这将使这很容易(希望如此)


查看完整回答
反对 回复 2019-08-06
  • 3 回答
  • 0 关注
  • 798 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信