【问题标题】:jQuery-Ajax JSON charset conflictjQuery-Ajax JSON 字符集冲突
【发布时间】:2010-08-24 13:32:57
【问题描述】:

我有两个组合框“A”和“B”。 Combo "B" is populated using jQuery Ajax (dataType:json) when a value in Combo "A" is selected (onchange event).

在某些情况下,“B”中的部分数据可以是中文/国际,在这种情况下,数据会显示为“????”在浏览器中。

通常整个设置是这样的:

ERP Servlet JSP 浏览器

ERP 支持 UTF-8。我可以在 ERP 控制台中清楚地看到中文数据。我已经将传递到 servlet 的结果数据转储到一个文件中,只是为了检查它是否正确。它被完美编码。我已将 JSP 的 contentType 设置为 UTF-8。一切就绪。

我已将 Ajax 中必要的 contentType 添加到“application/json;charset=utf-8”。还是没有骰子。

这就离开了浏览器。我已经使用了所有的浏览器,并且出现了同样的问题。我注意到浏览器在动态填充时根本无法理解中文数据的字符集。

可能出了什么问题?由于安全原因,我无法发布代码。我将不胜感激任何形式的建议。

非常感谢! ~萨比尔

【问题讨论】:

  • 您是否在所有浏览器中都看到了这种错误编码?
  • 是的,包括 Firefox 在内的所有浏览器。
  • 如果是跨浏览器,你的操作系统能显示汉字吗?

标签: ajax jquery


【解决方案1】:

如果您已将 JSP 设置为 UTF-8,并且生成的 contentType 也设置为 UTF-8,您可以试试这个

1)调用servlet时使用contentType参数怎么样,如https://stackoverflow.com/a/6283111/1078487所示

$.ajax({
      type: "POST",
      url: "yourservlet",
      dataType: "text",
      data: {yourparams},// here we def wich variabe is assiciated
      contentType: "application/x-www-form-urlencoded; charset=UTF-8",
      success: function(data) {
         //population
      }
});

2) 即使您的 ERP 设置为 UTF-8,也只需使用 UTF-8 字节转换仔细检查返回的字符串,看看会发生什么。

byte[] utf8Bytes = stringToParse.getBytes("UTF8");
String stringToReturn = new String(utf8Bytes, "UTF8");

【讨论】:

    猜你喜欢
    • 2011-01-14
    • 1970-01-01
    • 2012-03-21
    • 2012-02-29
    • 1970-01-01
    • 2012-03-06
    • 1970-01-01
    • 2016-12-08
    • 1970-01-01
    相关资源
    最近更新 更多