【问题标题】:PHP text/plain result + Character setPHP文本/纯结果+字符集
【发布时间】:2012-03-23 11:54:01
【问题描述】:

我已经实现了一个生成字符串的 PHP 脚本。
我已将内容类型指定为 text/plain。

我通过 AJAX 请求调用我的 PHP 脚本。
我使用 jQuery 函数来执行 AJAX 请求。
然后我检索结果字符串并将其插入 DOM。
我的调用 HTML 页面的内容类型是 iso-8859-1。

但结果字符串未正确显示在我的调用 HTML 页面中。
带有重音符号的字母 e 被替换为特殊字符。

有谁知道隐式使用哪个字符集来对我的 PHP 脚本生成的字符串进行编码?
如果使用的字符集与 iso-8859-1 不同,那么如何使用 iso-8859-1 字符集重新编码结果字符串?

【问题讨论】:

    标签: php character-encoding


    【解决方案1】:

    Ajax 请求默认为 UTF-8。

    您的 Ajax 资源应该发出 UTF-8 数据。浏览器应自动将结果转换为页面的本地字符集,在您的情况下为 ISO-8859-1。

    如果您的 Ajax 资源正在输出 ISO-8859-1 数据,请使用类似

    $data = iconv($data, "ISO-8859-1", "UTF-8"); 
    

    对其强制执行 UTF-8。 (或者,使用 utf8_encode() 做同样的事情。)

    【讨论】:

    • 您确定浏览器会自动从 UTF-8(Ajax 结果)转换为 ISO-8859-1(HTML 页面)吗?最近我把我所有的 HTML 页面都改成了 UTF-8 格式,因为浏览器没有这样做,我想避免这样的编码问题(现在都是 UTF-8)。
    • @Martin AFAIK 如果页面的编码被明确定义,它应该自动转换它,但我现在找不到定义这个的权威来源。
    【解决方案2】:

    在你的 PHP 脚本中试试这个:

    echo htmlentities($str, ENT_QUOTES, "ISO-8859-1");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-27
      • 1970-01-01
      • 2013-02-19
      • 1970-01-01
      • 2019-07-31
      相关资源
      最近更新 更多