【问题标题】:angular.js $http.get how to force UTF-8 encodingangular.js $http.get 如何强制 UTF-8 编码
【发布时间】:2013-10-14 10:26:53
【问题描述】:

我必须读取用 utf-8 字符集编码的 JSON 文件
我使用这种语法:

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

但是,响应头是:

内容类型:文本/纯文本; charset=ISO-8859-1

如果我尝试使用 jquery 执行此操作:

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

请求标头正确。但是,响应是一样的。

内容类型:文本/纯文本; charset=ISO-8859-1

【问题讨论】:

  • 你使用的服务器是什么?
  • 正如@nubbel 所说,服务器响应决定了返回的内容 - 检查您的服务器端代码。
  • 服务器端代码是我。我自己写了一个 utf-8 编码的 json 用于测试。不幸的是,我无法更改服务器上的任何内容
  • @Banasci 如果服务器端代码是你的,为什么你不能改变它?
  • 如果服务器说charset=ISO-8859-1 是真的 - 你为什么要关心?这些东西应该透明地工作,你不应该(因此不能轻易地)强迫服务器给你一个特定的字符集。但是,如果服务器说 charset=ISO-8859-1 并且它不是事实,那么您需要修复服务器,而不是客户端。

标签: javascript jquery angularjs encoding utf-8


【解决方案1】:

您可能需要设置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"
});      

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2011-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-03
      • 2016-10-06
      • 2021-04-27
      • 2012-10-08
      相关资源
      最近更新 更多