Angular.js $http.get 如何强制使用 UTF-8 编码

6

我需要读取使用utf-8字符集编码的JSON文件
我可以使用以下语法:

$http.get('resources/negozi.json',
    {header : {'Content-Type' : 'application/json; charset=UTF-8'}
}).success(function(data) {
... code here
});

然而,响应头是:

Content-Type: text/plain; charset=ISO-8859-1

如果我尝试使用jQuery:

$.ajax({
type: "GET",
url: "resources/negozi.json",
contentType: "application/json; charset=utf-8",
dataType: "json",

请求头正确,但响应相同。

内容类型:文本/纯文本; 字符集=ISO-8859-1


你使用的服务器是什么? - nubbel
1
正如 @nubbel 所说的那样,服务器响应决定了返回的内容 - 请检查您的服务器端代码。 - Qantas 94 Heavy
服务器端的代码是我写的。我自己编写了一个UTF-8编码的JSON进行测试。不幸的是,我无法更改服务器上的任何内容。 - Banasci
1
@Banasci 如果服务器端的代码是你自己的,为什么不能直接更改呢? - nubbel
1
如果服务器说 charset=ISO-8859-1 并且这是真的 - 你为什么要在意呢?这些事情应该透明地工作,你不应该(因此也不能轻易地)强制服务器给你一个特定的字符集。然而,如果服务器说 charset=ISO-8859-1 但实际上并不是,那么你需要修复服务器,而不是客户端。 - Tomalak
你说得对,由于我无法修复服务器,我必须使用ISO-8859-1字符集编写我的JSON。 - Banasci
2个回答

6

看起来你可能需要设置一个 Accept 头信息。 contentType 头信息应用于你发送的内容;

Accept: application/json;charset=UTF-8
Accept-Charset: UTF-8

所以;
$.ajax({
   type:"GET",
   url:"resources/negozi.json",
   headers: {
       "Accept": "application/json;charset=utf-8",
       "Accept-Charset":"charset=utf-8"
   },
   dataType:"json"
});      

0
如果您正在使用 PHP 作为服务器端编程语言,可以尝试使用 mb_internal_encoding("utf-8") 将内部编码设置为 utf-8。

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