我遇到类似的问题:jQuery AJAX Character Encoding但是那里提到的任何解决方案都适用于我。
我已经制作了三个简单的文件来显示问题:
PHP文件:
//prueba.php
echo "nº one two € áéíóú";
JavaScript文件(我使用JQuery)
//Javascript file
function prueba() {
$.ajax({
type: "GET",
contentType: "application/x-www-form-urlencoded;charset=ISO-8859-1",
url: "prueba.php",
}).done(function( data ) {
$("#prueba").text(data);
//$("#prueba").html(data); //It does the same encoding error
});
}
** HTML文件:**
<html>
<head>
<title>E-COMMERCE</title>
<meta content="text/html; charset=iso-8859-1" http-equiv=Content-Type>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<script src="javascript/jquery.js" type="text/javascript"></script>
<script src="javascript/javascript.js" type="text/javascript"></script>
</head>
<body>
<a href="javascript:prueba()">Prueba</a>
<div id="prueba"></div>
</body>
</html>
当您点击链接Prueba时,它会显示:
Prueba
n� uno dos � �����
当前网站运行完美,但它不使用ajax并且它在我正在执行此操作的同一服务器中,所以我如何告诉jquery返回ISO-8859-1而不是它返回的任何内容?我知道理想的是总是使用utf-8但是改为utf-8它会给我们一些我们现在无法承受的问题。
答案 0 :(得分:4)
要使浏览器使用正确的编码,您必须在php页面中添加HTTP标头:
header("Content-Type: text/plain; charset=ISO-8859-1");
或者您可以将编码放在html的元标记中:
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
答案 1 :(得分:0)
在你的php文件中,你需要输出UTF-8 encode:
echo utf8_encode("nº one two € áéíóú");
然后在你的html文件中你需要设置charset:
<html>
<head>
<meta charset="utf-8"/>
...
为了良好实践,还要指定文档类型:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
...
<!DOCTYPE html>
是合法的HTML5 doctype。
正如Pranav Kapoor指出的那样,你可能还需要指定PHP文件字符集:
header("Content-Type: text/plain; charset=UTF-8");
我可以看到您已将您的字符集指定为:ISO-8859-1
。我一直使用UTF-8
您可以在此处详细了解:What is the difference between UTF-8 and ISO-8859-1?
但是从您的ajax调用中删除contentType