【问题标题】:Is there a PHP function to fix this? [closed]有没有一个PHP函数来解决这个问题? [关闭]
【发布时间】:2011-02-09 02:55:55
【问题描述】:

““对不起,我希望这不是什么奇怪的事情,”

我怎样才能修复这个编码?

【问题讨论】:

  • 这取决于它来自哪里以及它是什么。一般来说,一旦你拥有真正的mojibake,你就无法神奇地修复它。如果你只是在途中的某个地方没有正确处理编码,你可以在适当的位置修复它,以防止它首先变成 mojibake。
  • 你能详细描述一下这个问题吗?

标签: php encoding


【解决方案1】:

您遇到的是数据以一种编码写入并解释为另一种编码的结果。您需要确保您请求的输入格式与您期望的格式相同。我建议您始终坚持使用 UTF-8,除非您需要避免使用多字节字符,在这种情况下你可能想看看强制ASCII。

确保您告诉 PHP 在内部使用 UTF-8:

ini_set('default_charset', 'UTF-8');

并确保您告诉浏览器期待 UTF-8 编码的文本,无论是在标头中......

header("Content-Type:text/html; charset=UTF-8");

...在您的元标记中(下面的 html5)...

<meta charset="utf-8">

设置此项将告诉浏览器在提交表单时向您发送 UTF-8 编码的内容,并且它也会将您发送回的结果解释为 UTF-8。

您还应该确保您的数据库存储和连接编码也是 UTF-8。通常只要它只是一个愚蠢的数据存储(即它不会以任何方式操纵或解释数据)就没有关系,但最好把它做好,而不是以后遇到问题。

【讨论】:

    【解决方案2】:

    iconv 函数通常能够处理这种编码问题。

    【讨论】:

    • iconv 可以提供帮助,但前提是您知道需要从一种编码转换为另一种编码。 Webnet 似乎对这件事还不够熟悉,无法知道他想要转换的编码是什么。
    【解决方案3】:

    【讨论】:

    • 我宁愿不使用正则表达式,而是可以整体解决所有编码问题的东西。
    【解决方案4】:

    你的 php 设置是什么?

    您可以配置 php 对字符串进行编码,在大多数情况下建议使用 utf8,并且您的 html 页面中必须有一个 Content-Type 标记

    【讨论】:

      【解决方案5】:

      此外,除了上述几点之外,如果您将数据保存到数据库表中,那么表和列(也可能是数据库本身)应该具有 utf8_general_ci 以便它可以处理多字节字符。

      p>

      我还在运行任何查询之前发出此查询set names 'utf8'

      【讨论】:

      • 排序规则(如 utf8_general_ci 或 utf8_unicode_ci)对于排序以外的任何事情都无关紧要。您可能指的是“CHARACTER SET”,正如 MySQL 所指的那样,它应该设置为“utf8”。
      • 偶然发现了这个答案和 cmets.... 你实际上应该使用 utf8mb4_unicode_ci !! mysql 的 utf8 最多只支持 3 个字节... utf8mb4 支持完整的 4 个字节。一般排序规则也有些破坏,unicode排序规则遵循规范。
      【解决方案6】:

      看起来正确的解决方案是mb_convert_encoding()

      字符串mb_convert_encoding(字符串$str,字符串$to_encoding[,混合$from_encoding])

      将字符串 str 的字符编码从可选的 from_encoding 转换为 to_encoding。

      【讨论】:

        猜你喜欢
        • 2012-10-24
        • 1970-01-01
        • 2020-03-19
        • 1970-01-01
        • 2018-08-29
        • 1970-01-01
        • 2014-12-14
        • 2021-01-17
        • 2021-12-19
        相关资源
        最近更新 更多