我如何确保英镑符号(£)正确显示?

时间:2009-06-24 16:23:18

标签: php xml encoding utf-8

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

页面的内容类型如下:

<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可以解决这个问题,但我一定是错的。任何人都可以告诉我我需要使用哪种编码类型来使其一致地呈现?

2 个答案:

答案 0 :(得分:6)

字符编码的问题在于,如果某个程序或进程在任何步骤中都无法正确处理它,那么就可以对字符进行处理。

所以,你有

  1. 一个
  2. 的HTML页面
  3. 进行AJAX调用
  4. 服务器上运行一些代码
  5. 从XML文件构建XML响应
  6. 返回浏览器并显示在文本框中
  7. 因此,理想情况下,在每一步,您都需要UTF-8编码。在这个过程中,你的角色可能会受到影响。以下是我采取的跟踪此步骤的步骤

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

答案 1 :(得分:3)

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

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

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