HttpServletRequest中接收到的json数据,中文乱码,如何解决?详情见补充

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HttpServletRequest中接收到的json数据,中文乱码,如何解决?详情见补充相关的知识,希望对你有一定的参考价值。

StringBuilder stb = new StringBuilder();
String s = null;
BufferedReader br = new BufferedReader(new InputStreamReader(request.getInputStream()));
while ((s = br.readLine()) != null)
stb.append(s);

if(stb.length() <= 0)
ret = "Number:1";
return ret;

System.out.println("========="+stb.toString());
JSONObject jo = JSONObject.fromObject(stb.toString());
打印stb出现乱码,这是哪里原因??

已经添加了EncodingFilter,编码是utf-8

问题出现在哪里???
问题出在哪里?
请求数据是通过安卓手机发送的。

参考技术A 用BufferedReader br = new BufferedReader(new InputStreamReader(request.getInputStream(),"gb2312"));试试追问

编码是utf-8的但是,无论是utf-8,gbk等都不管。。。

参考技术B 对于乱码问题,首先你应该知道对方是什么编码格式才能正确的转码,得到想要得到的信息,负责只会越转越乱本回答被提问者和网友采纳

将接收到的 sendFormParameters 参数读入 IBM MobileFirst Platform v8.0 中的 JS Adapter 方法

【中文标题】将接收到的 sendFormParameters 参数读入 IBM MobileFirst Platform v8.0 中的 JS Adapter 方法【英文标题】:Reading received sendFormParameters params into JS Adapter method in IBM MobileFirst Platform v8.0 【发布时间】:2017-04-09 14:49:55 【问题描述】:

我在客户端调用了 javascript WLResourceRequest.POST 并尝试在服务器端读取接收到的值。在服务器上,我只能读取“AB”。

客户端代码:

var resourceRequest = new WLResourceRequest("/adapters/AdapterNewGet/getFeed", WLResourceRequest.POST);
var formParameters="params":"['AB','CD','EF']";   
resourceRequest.sendFormParameters(formParameters).then(app.onSuccess, app.onFailure);

适配器端代码:

function getFeed(tag) 
    var input = 
        method : 'post',
        returnedContentType : 'xml',
        path : getPath(tag)
    ;
    return MFP.Server.invokeHttp(input);

在这里,当我打印JSON.stringify(tag) 时,它只打印“AB”。请告诉我如何将客户端代码中的所有传递值访问到适配器方法getFeed(tag)

谢谢,

【问题讨论】:

Reading received sendFormParameters params for JS Adapter method in IBM MobileFirst Platform v8.0的可能重复 【参考方案1】:

有人向我指出的一个建议是

var params =['hello','world'];                                         
 var newParams = 'params' : JSON.stringify(params);                   
 resourceRequest.sendFormParameters(newParams).then(.....)  

并在 JS 适配器中,相应地定义函数:

function getFeed(x,y)                                                  

 WL.Logger.error(JSON.stringify(x));                                    
 WL.Logger.error(JSON.stringify(y));   

这意味着在接收端,你需要在函数调用上指定与客户端设置的参数个数相匹配的参数个数(这里是2个)

如果您传递的值的数量在客户端上有所不同,这可能不起作用

【讨论】:

以上是关于HttpServletRequest中接收到的json数据,中文乱码,如何解决?详情见补充的主要内容,如果未能解决你的问题,请参考以下文章

vue + nuxt.js - 如何读取从外部请求接收到的 POST 请求参数

HttpServletRequest对象

HttpServletRequest对象

为啥js二维数组传给后台接收到的数据变成了字符串

Vue js 为每个不间断的接收到的消息集在最后一个元素放置一个图标

java 怎么接收http请求