utf8_encode()无法正常工作

时间:2015-11-01 23:36:16

标签: php

我遇到utf8_encode()功能问题。

这是一个例子

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <?php
    header("Content-Type: text/html; charset=utf-8");
    $str = "Şşİğ";
    echo utf8_encode($str);
    ?>

我看到的输出是

  

SsIg(第三个是大写i)

如果我不使用utf8_encode()这就是我得到的

  

AAA°的

因此,这对某些语言并不适用。它只是使它有点意义而不是正确。

由于

1 个答案:

答案 0 :(得分:3)

如果字符串的编码已经是UTF8(而不是ISO-8859-1(5)),you need do nothing

  

utf8_encode - 将ISO-8859-1字符串编码为UTF-8

实际上,在已经是UTF8的字符串上运行utf8_encode肯定会造成某种破坏。

你说文件编码是UTF8,但你得到的看起来像ISO-8859。所以我怀疑你有一些东西搞乱了编码链。

验证Content-Type标题(即验证您设置的标题,确实是发送的标题),仔细检查文件编码以及浏览器设置(它应该是UTF8或自动检测。)

另外,很奇怪你应该得到“SsIg” - 这绝对是 UTF8编码的预期行为。似乎某些东西试图通过将它们映射到最相似的ASCII字符来将您的字符映射回ASCII集。因此,我还会检查中间的任何代理或缓存或任何,以便操作脚本发送的数据。