【问题标题】:How do I ensure the British Pound Sterling Sign (£) appears correctly?如何确保英镑符号 (£) 正确显示?
【发布时间】:2009-06-24 16:23:17
【问题描述】:

我有一个 PHP 脚本,它从 XML 文件中读取数据,通过 AJAX 将其返回到页面,然后将数据放入相关的文本区域。

页面的Content-Type如下:

<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />

XML 标题如下所示:

<?xml version="1.0" encoding="UTF-8"?>
  <!DOCTYPE xsl:stylesheet  [
    <!ENTITY pound  "&#163;">
 ]>
...

问题是当数据到达文本框时,它前面有字符 Â。

我的印象是将内容类型设置为 UTF-8 可以解决此问题,但我一定是错的。谁能告诉我我需要使用哪种编码类型才能使其一致呈现?

【问题讨论】:

    标签: php xml encoding utf-8


    【解决方案1】:

    字符编码的问题是,如果某些程序或进程在任何步骤都未能正确处理它,那么字符可能会被删除。

    所以,你有

    1. HTML 页面是
    2. 进行 AJAX 调用
    3. 在服务器上运行一些代码
    4. 从一个 XML 文件构建一个 XML 响应
    5. 返回浏览器并显示在文本框中

    因此,理想情况下,每一步都需要 UTF-8 编码。很可能在您的角色被淘汰的过程中的某个步骤。这是我将采取的步骤来追踪它

    1. 确保您的 HTML/PHP 页面具有正确的元标记
    2. 确保您的 HTML/PHP 文本文件保存为 UTF-8
    3. 确保读取的 XML 文件已保存为 UTF-8
    4. 确保读取的 XML 文件和构建的响应都在序言中设置了编码
    5. 确保服务器的响应标头发送的是 utf-8
    6. 在浏览器中手动调用您的服务以查看符号是否正确返回

    【讨论】:

      【解决方案2】:

      您需要确保您的 AJAX 请求也返回 UTF-8。设置静态页面的 Content-Type 没问题,但不会影响 Ajax 调用时发生的 HTTP 传输的 Content-Type 编码。

      尝试在返回 Ajax 结果的脚本中使用此代码(在任何其他输出之前)。这将设置您的 HTTP 响应的 Content-Type:

      header('Content-Type: text/html; charset=utf-8');
      

      【讨论】:

      • 干杯,不确定我是否有这个,但我认为我的 php.ini 无论如何都设置为默认以 UTF-8 提供页面:)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-03
      • 1970-01-01
      • 1970-01-01
      • 2011-04-12
      • 2011-02-26
      • 2013-05-15
      • 1970-01-01
      相关资源
      最近更新 更多