我的javascript变量中的特殊字符一直显示为 ,我该如何防止这种情况?

时间:2010-12-13 23:13:48

标签: javascript ajax

我有一个javascript脚本,它调用一个php页面来提供带有建议的ajax表单。这些建议由php页面返回正常,但出于某种原因,当我将javascript对象请求的responsetext设置为我的HTML页面中的元素时,所有特殊字符(即á或ã)都显示为此问号。是否必须在请求的响应文本上运行函数II以确保正确读取这些函数?

感谢。

2 个答案:

答案 0 :(得分:4)

如果您没有将HTML页面作为UTF-8提供,浏览器将猜测编码,通常是单字节Windows代码页,具体取决于用户的语言环境。

但AJAX不会发生这种情况。对于XMLHttpRequest,除非您在Content-Type: ...; charset=参数中明确说明编码,否则浏览器会将其视为UTF-8。这意味着如果您实际上正在提供Windows代码页1252(西欧)内容,您将获得无效的UTF-8序列和随之而来的问号。

您不希望使用非UTF-8编码!确保在整个应用程序中使用UTF-8。使用Content-Type: text/html; charset=utf-8投放所有网页,将数据存储在UTF-8表格中,使用mysql_set_charset()选择UTF-8等。

在任何情况下都考虑使用JSON传递AJAX响应。函数json_encode()将创建一个JSON字符串,该字符串对非ASCII字符使用JavaScript转义序列,这避免了编码不匹配的任何问题。此外,这比添加原始HTML更容易扩展以添加功能。

答案 1 :(得分:0)

我会尝试在你的php脚本中将所有内容编码为html实体。

在将结果返回到javascript:

之前,可以通过执行此类操作轻松进行测试
$results = htmlentities($htmlstring);

您还可以尝试使用htmlspecialchars功能。

更多相关信息: