将 ISO-8859-1 转换为 UTF-8 [重复]

Posted

技术标签:

【中文标题】将 ISO-8859-1 转换为 UTF-8 [重复]【英文标题】:Convert ISO-8859-1 to UTF-8 [duplicate] 【发布时间】:2014-04-30 12:07:59 【问题描述】:

我正在通过 jQuery 的 ajax 发送 HTTP 请求。

但是我无法访问的服务器返回 ISO-8859-1,而我的页面是 UTF-8。

如何将字符转换为可读?

对于没有转换的情况,看起来像:it�rio

@编辑: 我尝试使用以下方法更改 ajax 请求的字符集:

$.ajax( contentType: ... );

我尝试将 html 的元数据更改为 ISO-8859-1。

@解决方案: 我在以下位置找到了解决方案:https://***.com/a/14397845/3451442

【问题讨论】:

@mplungjan 我已经搜索过了。但我需要从 ISO-8859-1 转换 你可以试试contentType: "application/x-www-form-urlencoded;charset=ISO-8859-1",contentType: "application/x-www-form-urlencoded;charset=UTF-8", (不确定它转换的方式) @mplungjan 我也试过了,但没有用。我需要一个像 iconv =/ 这样的函数 @mplungjan 抱歉,我会编辑帖子。 【参考方案1】:

试试下面的技巧:How do I convert special UTF-8 chars to their iso-8859-1 equivalent using javascript?

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

utfstring = unescape(encodeURIComponent(ajaxreturn));

编辑:如果这也不起作用,请尝试相反的方法:

fixedstring = decodeURIComponent(escape(ajaxreturn));

如果您发布“编码”函数的输出也可能会有所帮助 - 这样可以识别正在发生的事情:

encodeURIComponent(ajaxreturn)
        vs.
escape(ajaxreturn)

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

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

【讨论】:

效果不佳。内容是:it�rio 是:it�rio 试试decodeURIComponent(ajaxreturn.replace(/\\x/g,"%")),它对我有用。

以上是关于将 ISO-8859-1 转换为 UTF-8 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

在 Java 中将 UTF-8 转换为 ISO-8859-1 - 如何将其保持为单字节

将字符串从 UTF-8 转换为 ISO-8859-1

C# 将字符串从 UTF-8 转换为 ISO-8859-1 (Latin1) H

将 ISO-8859-1 / Latin-1 转换为字符串 (UTF-8) 的选项都有哪些?

将组合 diaerese 转换为 ISO 8859-1

使用 .NET 如何将包含 Latin-1 重音字符的 ISO 8859-1 编码文本文件转换为 UTF-8