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