将ISO-8859-1转换为UTF-8

8
我正在使用jQuery的ajax发送HTTP请求。但是服务器返回ISO-8859-1编码,而我的页面是UTF-8编码。请问如何将这些字符转换为可读取的格式?如果不进行转换,会出现像it�rio这样的乱码。
@编辑:我尝试过使用以下方法更改ajax请求的字符集:
$.ajax({ contentType: ... });

我试图将html的meta更改为ISO-8859-1。
@解决方案: 我在这里找到了解决方案: https://dev59.com/A2ox5IYBdhLWcg3ww3AD#14397845

@mplungjan 我已经搜索过了。但我需要从ISO-8859-1转换。 - user3451442
1
你可以尝试使用 contentType: "application/x-www-form-urlencoded;charset=ISO-8859-1", 或者 contentType: "application/x-www-form-urlencoded;charset=UTF-8", (不确定哪种方式会转换) - mplungjan
@mplungjan 我也尝试过那个方法,但不起作用。我需要一个类似于iconv的函数。 - user3451442
@mplungjan 抱歉,我会编辑帖子。 - user3451442
1个回答

11

尝试使用以下技巧:如何使用 JavaScript 将特殊的 UTF-8 字符转换为其 iso-8859-1 等效字符?

在您的情况下,您可以简单地使用:

utfstring = unescape(encodeURIComponent(ajaxreturn));

编辑:如果这个方法不行,尝试另外一种方法:

fixedstring = decodeURIComponent(escape(ajaxreturn));

如果您发布“encode”函数的输出结果,可能会有所帮助 - 这样就可以确定发生了什么:

encodeURIComponent(ajaxreturn)
        vs.
escape(ajaxreturn)

如果这些方法都不行,我猜你应该将整个页面转换为iso-8859-1:

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

7
抱歉,但您提供的内容似乎存在问题,无法正确理解或翻译。请提供更清晰和准确的信息。 - user3451442
尝试使用decodeURIComponent(ajaxreturn.replace(/\\x/g,"%")),这对我有效。 - Kino

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接