繁体   English   中英

从Java Servlet接收UTF-8字符集的JSON数组响应

[英]Receive JSON Array response from Java servlet in UTF-8 charset

我正在对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可能存在问题。 任何人都有什么好主意。 非常感谢所有帮助。 :)

我设法使它起作用。 问题在于,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对象。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM