【问题标题】:Receive JSON Array response from Java servlet in UTF-8 charset以 UTF-8 字符集从 Java servlet 接收 JSON 数组响应
【发布时间】:2018-01-26 20:57:15
【问题描述】:

我正在对 java servlet 进行 ajax 调用。 servlet 使用一个 JSON 数组进行响应,该数组的字符集设置为 UTF-8。但是,一旦我在 AJAX 调用中得到响应,我就会得到 ???我的字符串中的字符。我进行了大量测试和研究,但找不到可能的解决方案。

AJAX 调用:

                  $.ajax({
                    type: 'POST',
                    data: {curTableName: curTableName,curTableID: curTableID},
                    dataType: 'json',
                    url: '../ShowProducts',
                    success: function(productInfo){ 
                       var noOfProducts = productInfo.length;
                        for(var i = 0; i < noOfProducts; i++)
                        {
                            product.push(productInfo[i].product.substr(0,25) + "...");
                            webshop.push(productInfo[i].webshop);
                            price.push(productInfo[i].price);
                            availability.push(productInfo[i].availability);
                            lastChecked.push(productInfo[i].lastChecked);
                            checkFreq.push(productInfo[i].checkFreq);
                            url.push(productInfo[i].url);
 DisplayProductInfo(product[i],webshop[i],price[i],availability[i],lastChecked[i],checkFreq[i],url[i]);
                        }
                    }   
                });

还有我的 Java Servlet 响应:

            response.setContentType("application/json");
            response.setCharacterEncoding("UTF-8");
            response.getWriter().write(jsonArr.toString());

根据我自己的研究,java servlet 似乎是正确的,可能是 javascript 存在问题。任何人都有任何好主意。非常感谢所有帮助。 :)

【问题讨论】:

  • 您的数据是 UTF-8 编码的吗?
  • 如Java servlet响应所示,我将字符编码设置为UTF-8。
  • 你设置了,但是如果加载的数据不是UTF-8编码的,那就不行了。
  • 我会去看看。谢谢。

标签: java json ajax servlets utf-8


【解决方案1】:

我已经设法让它工作了。问题在于 JSON 需要在 servlet 中编码,并在 javascript 中解码。谢谢你 - 艾莎。

代码更改:

AJAX 调用:

     $.ajax({
                    type: 'POST',
                    data: {curTableName: curTableName,curTableID: curTableID},
                    dataType: 'json',
                    url: '../ShowProducts',
                    success: function(productInfo){ 
                       var noOfProducts = productInfo.length;
                        for(var i = 0; i < noOfProducts; i++)
                        {
                            productInfo[i].product = decodeURIComponent(productInfo[i].product);
                            productInfo[i].product = productInfo[i].product.replace(/\+/g, ' ');
                            product.push(productInfo[i].product.substr(0,25) + "...");
                            webshop.push(productInfo[i].webshop);
                            price.push(productInfo[i].price);
                            availability.push(productInfo[i].availability);
                            lastChecked.push(productInfo[i].lastChecked);
                            checkFreq.push(productInfo[i].checkFreq);
                            url.push(productInfo[i].url);
 DisplayProductInfo(product[i],webshop[i],price[i],availability[i],lastChecked[i],checkFreq[i],url[i]);
                        }
                    }   
                }); 

JAVA SERVLET:

productSplit[0] = URLEncoder.encode( productSplit[0], "UTF-8");

已将附加行添加到 Java servlet。现在标题被编码了,然后才进入 JSON 对象。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多