【问题标题】:mb_detect_encoding ever is ASCIImb_detect_encoding 曾经是 ASCII
【发布时间】:2011-05-14 00:31:44
【问题描述】:
$output = "ALLWILLBEASCII";
foreach ($output as $name => $value) {
    echo mb_detect_encoding( $value );
}

如何在 PHP 中将 ASCII 转换为 UTF-8?

【问题讨论】:

    标签: php html utf-8 ascii


    【解决方案1】:

    如果一个字符是有效的 ASCII,它是有效的 UTF-8,没有什么可以转换的。 http://en.wikipedia.org/wiki/UTF-8

    【讨论】:

    • 那为什么不能在json_encode中合并UTF-8和ASCII字符串,如果都一样呢?
    【解决方案2】:

    您可以使用 mb_convert_encoding() 或 iconv() 来转换字符编码。

    【讨论】:

      【解决方案3】:

      ASCII 的字符是 Unicode 的子集,ASCII 的代码字也是有效的 UTF-8。所以你不需要转换,因为每个 ASCII 字符串也是一个有效的 UTF-8 字符串(反之亦然)。

      【讨论】:

      • @Green 是什么让你这么认为?
      • 对不起。看来我只是忘了JSON.parse来自服务器的响应。我使用俄语来回答有关在 ZF2 中验证用户凭据的问题。因此,当我设置一些俄语消息(如果mb_detect_encoding 为utf-8)并且一些消息是ZF2 的默认值(如果mb_detect_encoding 则为ASCII),并且我将它们组合在一个json 答案中时,我在alert(xhr.response) 中看到俄罗斯消息是像["\u0440\u0436\u0438\u0442...,但英文是正常的"The input appears to be a DNS hostname...。但是在JSON.parse(xhr.response)之后,它们都正常了:)
      • @Green 一些 JSON 编码器选择安全运行,并使用 Unicode 转义序列 \uxxxx(请参阅 RFC 4627)对任何非 ASCII 字符进行编码,以便与基于纯 ASCII 的协议兼容。
      猜你喜欢
      • 2013-04-24
      • 1970-01-01
      • 2015-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-08
      • 2013-07-13
      相关资源
      最近更新 更多