Java后台获取前端POST请求中Json数据的乱码问题

前端上传的Json数据如下所示:

 {
    "name":"百度跳线",//产品名字
    "data":[

        {"num": 1, "gongxu": "bq"}//gongxu:工序名称,名字已经统一。num:排名顺序

        {"num": 2, "gongxu": "rs"}

        {"num": 3, "gongxu": "slsjzp"}
        //.......
        //.......
    ]
}

在Java后台的Servlet中通过以下代码获取请求体:

 request.setCharacterEncoding("utf-8");
        response.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");
        // 1. 获取请求体中的内容
        BufferedReader br = new BufferedReader(
                new InputStreamReader(request.getInputStream(), "utf-8"));
        StringBuffer sb = new StringBuffer("");
        String temp;
        while ((temp = br.readLine()) != null) {
            sb.append(temp);
        }
        br.close();
        String params = sb.toString();
        System.out.println(params);

最后得出的结果却包含乱码:

 name=%E6%9D%A1%E7%BA%BF&data%5B0%5D%5Bnum%5D=1&data%5B0%5D%5Bgongxu%5D=ym&data%5B1%5D%5Bnum%5D=2&data%5B1%5D%5Bgongxu%5D=yj&data%5B2%5D%5Bnum%5D=3&data%5B2%5D%5Bgongxu%5D=yinddj

这里不仅有乱码,而且data字段也有好几个,请问怎么样才能把前端传的数据原封不动的取出来呢?

10个回答

url 解码,
结果
name=条线&data[0][num]=1&data[0][gongxu]=ym&data[1][num]=2&data[1][gongxu]=yj&data[2][num]=3&data[2][gongxu]=yinddj

http://tool.chinaz.com/tools/urlencode.aspx

这不是乱码吧。
这个是url 使用了urlencode进行的编码, 你需要使用 urldecode解码。

data多个是因为你传的数组,data[0], data[1]...

那不叫乱码,那是urlencode了,decode一下即可。

{
"name":"百度跳线",
"data":[
{"num": 1, "gongxu": "bq"},
{"num": 2, "gongxu": "rs"},
{"num": 3, "gongxu": "slsjzp"}
]
}
数据格式正确吗?

这不是乱码,是unicode码,你转一下就可以了。
转换方法推荐下文。
http://blog.csdn.net/z69183787/article/details/25742307

没有乱码你按照自定义接受

web.xml中添加编码过滤器嘛

private Map<String, String> decodeExtras(String extras) {
    Map<String, String> results = new HashMap<String, String>();
    try {
        URI rawExtras = new URI("?" + extras);
        List<NameValuePair> extraList = URLEncodedUtils.parse(rawExtras, "UTF-8");
        for (NameValuePair item : extraList) {
            results.put(item.getName(), item.getValue());
        }
    } catch (URISyntaxException e) {
      Log.w(TAG, "Invalid syntax error while decoding extras data from server.");
    }
    return results;
}

post请求会自动处理乱码问题,不需要你再进行编码处理.如果加了编码处理代码则会报错

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
post请求获取json数据
JS代码 function approveOpinion(batchId,opinion,flowId) { var approveRemark = $.trim(document.getElementById("approveRemark").value); if(approveRemark!=null&&approveRemark.length>10){ alert("审核
Android Post Json数据乱码问题
这两天在做注册功能时,昵称里有汉字,tomcat服务器后台日志及数据库的汉字都显示?问号。服务器是CentOS 7.0, 将系统语言配置成 LANG=zh_CN.UTF-8,服务器端代码的web.xml中已经添加了org.springframework.web.filter.CharacterEncodingFilter的Filter。结果还是乱码,问题可能出在Android客户端上。网上查了些资料,并尝试了更改不同位置的代码,定位到了问题。
C# Post请求json数据
//以html post方式请求json数据 private string Post(string strURL, string auth, string contentType, string jsonParas)         {             var httpWebRequest = (HttpWebRequest)WebRequest.Create(strURL);
Post请求发送Json数据
Post请求发送Json数据 修改 Post请求 增加Headers请求头 Content-Type 设置为 application/json body的编码方式为raw raw是发送纯文本,不包含任何空格的编码方式 send 发送 ...
POST 请求接收JSON数据
一般请求接口我们使用的是GET和POST请求方式, GET请求没什么好说的, POST请求可以form表单提交请求的,也有用JSON数据请求的,而json数据在springmvc中使用@RequestBody进行接收, 下面是用HttpServletRequest接收的办法:   @RequestMapping(&quot;/notify&quot;) public void notify(HttpSer...
post请求json数据返回
前端请求 后台数据接受json数据 $reqJson = file_get_contents('php://input'); $reqArr = json_decode($reqJson, true);//判断raw内容填写格式是否正确 "token":"abca9992kk2k" $reqArr !== null or $this-&gt;errorResult(10001); ...
servlet 获取 body Json数据(post 请求)
postman测试请求接口: 后台代码 : protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try{ InputStream is= null; is = request.
java后台post请求调用接口
今天项目接口一直调不通,于是我修改了相关的代码 在网上找到了一个很好的例子: public static String httpPost(String urlStr,Map&amp;lt;String,String&amp;gt; params){ URL connect; StringBuffer data = new StringBuffer(); ...
java后台模拟页面post请求
java后台模拟页面post请求 /** *targetUrl:请求url *urlParam:需要封装进url的参数 *body:需要传递的参数 *type:请求格式类型:1.json;2.form-data;3.x-www-form-urlencoded */ private String httpPOST(String targetUrl,JSONObject url...
java后台通过url获取json数据
/** * 根据url获取json数据 *  * @param url * @return */ public static String loadJson(String url) { StringBuilder json = new StringBuilder(); try { URL urlObject = new URL(url); HttpURLConnection u
post和get请求的乱码问题
使用post请求出现乱码:在web.xml配置filter使用get请求出现乱码时,在Service下server.xml配置,端口为8080的编码格式
get,post请求乱码问题
场景 (页面传值到后台) 1.get 请求  get方式提交的参数编码,只支持iso8859-1编码。因此,如果里面有中文。在后台就需要转换编码. String name = request.getParameter(&quot;username&quot;); name = new String(name.getBytes(&quot;iso8859-1&quot;), &quot;utf-8&quot;); 显然正式环境写这个是不符合实际的...
解决POST请求乱码问题
在本地写了个脚本,请求服务器,请求方式是POST请求,设置seParameter,传递参数是中文,然后在服务器端接受的参数已经变为乱码,解决方式: 自定义POST请求的编码方式: public static class UTF8PostMethod extends PostMethod { public UTF8PostMethod(String url) { ...
处理post请求乱码问题
我们经常会出现提交form表单过来的数据乱码,我们只需要在web.xml中配置一个filter就能解决这个问题了。 <!-- 处理POST提交乱码问题 --> <filter> <filter-name>encoding</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilt
get post请求乱码问题
一、乱码的原因HTTP协议规定,所有的请求参数都是以字节的形式发送到服务器的,而服务器在接收到客户端发送的数据后,会按照服务器默认的字符编码ISO8859-1对字节数据进行解码。 若请求的参数包含UTF-8字符编码的中文时,浏览器会将UTF-8字符以字节的形式发送到服务器,服务器会将接收到的这些字节,按照ISO8859-1进行解码,所以就产生了乱码。二、get post到底是怎么传的1>get(由
get和post请求乱码问题
请求的中文乱码:         对于get请求:参数追加到地址栏,会使用utf-8编码,服务器(tomcat7)接受到请求之后,使用iso-8859-1解码,所以会出现乱码         对于post请求,参数是放在请求体中,服务器获取请求体的时候使用iso-8859-1解码,也会出现乱码 get请求乱码    new String(参数.getBytes(&quot;iso-8859-1&quot;),&quot;ut...
flex Post请求乱码问题
在flex端使用decodeURIComponent 正常来说应该好用 但是,转换的参数本身没有变,而后面的参数都变成正常中文了 不知道为什么 我就设置个临时的第一个参数为&quot;&quot;,后面紧跟着需要的参数 参考了 http://download.csdn.net/download/lemon_qq/4418258 ...
获取JSON数据乱码问题
通过http请求获取JSON数据,在本地通过main函数调用没有问题,发布到tomcat后,获得的JSON数据中的中文却又乱码,不知是什么原因?rntomcat的server.xml已配置了编码:rnrnrn以下是获取JSON数据的方法:rnpublic static JSONObject httpRequest(String requestUrl,String requestMethod)rn rn JSONObject jsonObject = null;rn rn try rn //建立连接rn URL url = new URL(requestUrl);rn //打开连接rn HttpURLConnection conn = (HttpURLConnection)url.openConnection();rn rn conn.setDoInput(true);rn conn.setDoOutput(true);rn conn.setUseCaches(false);rn rn //设置请求方式rn conn.setRequestMethod(requestMethod);rn //从输入流中获取返回的内容rn InputStream inputStream = conn.getInputStream();rn InputStreamReader reader = new InputStreamReader(inputStream);rn BufferedReader bufferReader = new BufferedReader(reader);rn rn String str = null;rn StringBuffer buffer = new StringBuffer();rn rn while( (str = bufferReader.readLine()) != null )rn rn buffer.append(str);rn rn rn bufferReader.close();rn reader.close();rn inputStream.close();rn inputStream = null;rn rn conn.disconnect();rn jsonObject = JSONObject.fromObject(buffer.toString());rn catch (MalformedURLException e) rn e.printStackTrace();rn catch (IOException e) rn e.printStackTrace();rn rnrn return jsonObject;rn
获取前端传来的json数据
private Map&amp;lt;String,String&amp;gt; parseParamer(){ Map map=new HashMap(){ String ajbs=(String) getHttpRequest().getAtribute(' ajbs'); String fydm=(String) getHttpRequest().getAtribute(' ...
前端获取form表单json数据
/**获取表单json数据 eg:var jsonData = $(&quot;#demoForm&quot;).serializeObject();*/ $.fn.serializeObject = function() {       var o = {};       var a = this.serializeArray();       $.each(a, function() {           if...
PostMan post请求发送Json数据
很多同学都习惯了使用发送get请求以及POST请求发送表单数据,但是如何使用postman post请求发送json数据呢. 第一步:在post请求的header里边设置发送数据的类型 设置发送数据类型为json 第二部:填写发送的json数据 选中raw,并粘贴要发送的json数据.send,就可以看到我们返回的数据了.
post json数据到springmvc中并获取http请求的内容
post json数据到springmvc中并获取http请求的内容 如何使用java.net下的API实现向springmvc postjson数据 在访问springmvc如何显示这些请求数据,以方便我们看到post的数据是否正确。
springmvc解决post中文乱码
CharacterEncodingFilter   org.springframework.web.filter.CharacterEncodingFilter     encoding   utf-8         CharacterEncodingFilter   /*
Post 和 get 请求乱码问题处理
原始处理get post 请求乱码 String newEncoding = new String( params.getBytes(&quot;iso-8859-1&quot;) , &quot;utf-8&quot; );  原理分析   post 处理乱码方式 req.setCharacterEncoding(&quot;UTF-8&quot;); resp.setHeader(&quot;content-type&quot;, &quot;text/html;c...
UrlConnection post请求中文参数乱码问题
UrlConnection post请求中文参数乱码问题
解决post get 请求乱码问题
可以解决post get请求乱码问题.
restTemplate 的post请求解决 乱码问题
HttpHeaders headers = new HttpHeaders(); MediaType type = MediaType.parseMediaType(&quot;application/json; charset=UTF-8&quot;); // 请勿轻易改变此提交方式,大部分的情况下,提交方式都是表单提交 headers.setContentType(type...
解决Get和post请求中中文乱码问题
1.1 post请求解决乱码 1.对于Post请求,只需在Servlet或者jsp中写入如下代码就可以把解决从表单中传入的中文乱码问题   request.setCharacterEncoding("utf-8");   String str=request.getParameter("name");   byte[] bytes=str.getBytes("ISO-8859-1");
GET和POST请求乱码问题解决方案
    在进行web开发时,经常会遇到GET和POST请求乱码的问题,现将自己的解决方案总结如下:一、GET请求乱码解决方案    修改Tomcat下的配置文件:server.xml。二、POST请求乱码解决方案    在web.xml里配置Spring编码过滤器。&amp;lt;filter&amp;gt;     &amp;lt;filter-name&amp;gt;characterEncoding&amp;lt;/filter-...
get/post请求中文乱码问题
所有的过滤器都只对post请求起作用,在jsp页面中设置字符编码方式,都只是对表单提交请求时的post请求起作用,对get请求不能起到设置其字符编码的作用,在get请求中使用的是默认的编码方法,所以对get请求,应该在server.xml文件中设置URIEncoding="GBK"然后重启tomcat便可以实现解决中文乱码问题,但是不建议在href超链接请求中传达中文参数,也不建议在get请求中传
SpringMVC处理POST请求乱码问题
在springmvc.xml中添加以下过滤器:<filter> <filter-name>characterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-para
POST和GET请求的汉字乱码问题
前提: jsp页面中:    通知浏览器以utf-8解码 GET请求传递原理: get请求编码方式和post请求提交编码方式不同,get是把数据直接放到url中,例如以上的uname,IE浏览器先对中文进行utf-8编码(一个中文3个字符表示 太长),继而为了缩短字符又用ISO8859-1编码后传递给服务器。服务器的doGet方法中要先进行ISO8859-1解码再utf-8解码才能看到中文
post与get请求中文乱码问题
首先POST与GET请求的应用场景:除了form表单提交和ajax指定post请求可以使post,其他都是get请求,比如浏览器直接写URL或者A标签POST请求:配置编码过滤器:解决post请求中文乱码 <filter> <filter-name>characterEncoding</filter-name> <filter-class>org.springframework.
Java --- Http post请求中的中文乱码问题
【记录】对接第三方,http协议接口,上传数据 【问题】基于HttpUrlConnection的post请求,json数据中包含中文,gson生成字符串时正常,抓包发现参数中的中文乱码 1.  利用DataOutputStream的writeBytes()方法,出现中文乱码。 dos.writeBytes(String s) 2. 将writeBytes(String s)替换为 d...
servlet中post和get请求乱码问题
在post请求当中我们是直接处理即可: public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //响应乱码的处理      response.setContentType("text/html;charset=ut
在request中获取请求中的json数据
一直以来,前台提交的json数据在springmvc中都是使用@RequestBody进行接受.以至于今天由于在springsecurity中需要获取到json数据,一时间没有了头绪.理论上数据都应该可以在request中获取到,但是没查到,源码中也没有发现.多次查找了一些博客或其他文章.终于找到了一篇文章完美解决了.下面是代码package com.ycgwl.kylin.security.ut...
解决get和post请求中的中文乱码问题
乱码原因 Tomcat7服务器默认会用iso-8859-1对URL和请求体进行解码,所以在遇到中文时会出现乱码现象.(Tomcat8版本之后使用的是utf-8) 解决方法 1、麻烦的解决方法(get和post通用) 每获取一个参数便进行一次转码 String parm = new String(request.getParameter(&quot;ParmName&quot;).getBytes(&quot;iso-8859-...
Get请求,Post请求乱码问题解决方案
之所以出现乱码,主要是由于编码和解码采用的方法不同。 因此保证编码解码格式一致是避免乱码发生的重要前提。 问题背景:JavaWeb技术下,Tomcat作为容器,发送请求的时候出现乱码问题。 下面以两种常见的请求方式为例讲解乱码问题的解决方法。 1.Post方式请求乱码。     自从Tomcat5.x以来,Get方式和Post方式提交的请求,tomcat会采用不同的方式来
关于post获取json数据问题
怎么从http://121.40.85.120:8089/DearService/mobile/userLogin通过post活得响应参数,post时不用传参数,具体的响应参数如下rn[img=https://img-bbs.csdn.net/upload/201505/22/1432306273_407362.png][/img]rn请问用AFNetworking怎么实现呢,谢谢!rn我之前的方法是:rnAFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];rn[manager POST:@"url" parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) rn NSLog(@"JSON: %@", responseObject);rn failure:^(AFHTTPRequestOperation *operation, NSError *error) rn NSLog(@"Error: %@", error);rn];rn但是取不到数据,希望有朋友能帮助解决,谢谢!
java后台get、post方法调用请求【常用方法】
POST请求: /*** * * @param url * @param param * @return 发送返回响应 * @throws IOException */ public static String sendInfoPost(String url,String param) throws IOException...
相关热词 c++和c#哪个就业率高 c# 批量动态创建控件 c# 模块和程序集的区别 c# gmap 截图 c# 验证码图片生成类 c# 再次尝试 连接失败 c#开发编写规范 c# 压缩图片好麻烦 c#计算数组中的平均值 c#获取路由参数