使用jQuery.load()加载div时的字符编码问题

时间:2011-03-28 18:30:04

标签: javascript jquery character-encoding

我使用jquery AJAX加载将html页面加载到div。加载的页面具有德语字符,并且编码不正确,而主页面中的德语字符显示正确。有人请帮我解决这个问题。

HTML页面

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-15"/>
<script type="text/javascript" src="script/jquery-1.4.2.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
 $.ajax({
 url : 'startPage.html',
 dataType: 'text',
 contentType: "application/x-www-form-urlencoded;charset=utf-8",
 success : function(data){
           $('#loadPage').html(data);
           }
 });

});
</script>
</head>
<body>
<div id="loadPage"></div>
<br />
Länge Länge
</body>
</html>

startPage.html

的代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-15"/>
</head>
<body>
Loaded Content - Länge - (This text is not displayed correctly)
</body>
</html>

在此页面中,我尝试为iso编码添加元标记,但仍未取得任何成功。请帮忙

2 个答案:

答案 0 :(得分:5)

 beforeSend : function(xhr) {
        xhr.overrideMimeType('text/html; charset=iso-8859-15');
    },

在你的ajax函数或ajaxSetup();

中使用它

答案 1 :(得分:0)

为了正确显示,您需要确保所有字符集都以相同的方式声明。例如,你得到:

<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-15"/>

在要求:

contentType: "application/x-www-form-urlencoded;charset=utf-8",

确保你知道你想要哪一个并给出正确的字符集。 .html,.php和.js文档的编码也是错误的一个因素。如果您使用notepad ++或任何代码编辑器,请确保使用您希望它们显示的相同字符集对文件进行编码。我建议你“转换”你的文件,这样你就不会丢失你已经放在那里的所有特殊字符。