JQuery .html 方法字符编码
Posted
技术标签:
【中文标题】JQuery .html 方法字符编码【英文标题】:JQuery .html method character encoding 【发布时间】:2012-10-28 12:41:43 【问题描述】:我有一个类似的问题: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 会给我们带来一些我们现在无法承受的问题。
【问题讨论】:
它显示:“n?一二?????”但这个例子真的很简单,我不能在真实的例子中做,因为它返回一大串 html。 【参考方案1】:要让浏览器使用正确的编码,你必须在 php 页面中添加一个 HTTP 标头:
header("Content-Type: text/plain; charset=ISO-8859-1");
或者您可以将编码放在 html 的元标记中:
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
【讨论】:
我解决了原始问题中的主要问题,方法是把它们都放在 php 文件中的头文件中,它为我提供了完整的 html 代码,以及在我更新选择器的 html 文件中。非常感谢!我真的有……这个:)【参考方案2】:在您的 php 文件中,您需要 UTF-8 encode 输出:
echo utf8_encode("nº one two € áéíóú");
然后在你的 html 文件中你需要设置字符集:
<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
【讨论】:
以上是关于JQuery .html 方法字符编码的主要内容,如果未能解决你的问题,请参考以下文章