4

我有一个类似的问题: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 会给我们带来一些我们现在无法承受的问题。

4

2 回答 2

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">
于 2012-11-08T10:27:38.783 回答
0

在您的 php 文件中,您需要对输出进行UTF-8 编码

echo utf8_encode("nº one two € áéíóú");

然后在您的 html 文件中,您将需要设置字符集:

<html>
<head>
    <meta charset="utf-8"/>
    ...

为了获得良好的实践,还要指定文​​档类型:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8"/>
    ...

<!DOCTYPE html>是合法的HTML5 文档类型。


正如Pranav Kapoor指出的那样,您可能还需要指定 PHP 文件字符集:

header("Content-Type: text/plain; charset=UTF-8");

我可以看到您已将您的字符集指定为:ISO-8859-1. 我总是和你一起工作UTF-8你可以在这里阅读更多关于它的信息:UTF-8 和 ISO-8859-1 有什么区别?

但是contentType从你的ajax调用中删除

于 2012-11-08T10:29:04.303 回答