Http请求传json数据中文乱码问题详解编程语言
2023-06-13 09:11:47 时间
业务场景:调easyui的dialog打开一个弹窗,传参是用json封装的,而且有中文,然后在极速模式是正常的,在ie11测试发现中文出现乱码了
var params = JSON.stringify(writParamList); top.dialog({ id: noticeList, title:列表, width:900, height:500, url:${root}/notice/multiNoticeList.do?params=+params, onclose:function(){ //location.reload(); }).showModal();
后台获取json数据,并转成list,然后在ie模式,获取到的json数据都出现中文乱码,然后导致json不能解析报错了
String params = request.getParameter("params"); logger.info("文书参数转换前:》》"+params); params=StringEscapeUtils.unescapeJava(params); logger.info("文书参数转换后:》》"+params); ObjectMapper mapper = new ObjectMapper(); JavaType javaType = mapper.getTypeFactory().constructParametricType(List.class, FormModel.class); /*List FormModel writUnionFormList = JSON.parseArray(params, FormModel.class);*/ List FormModel writUnionFormList=new ArrayList FormModel try { writUnionFormList = (List FormModel )mapper.readValue(params, javaType); } catch (JsonParseException e) { e.printStackTrace(); } catch (JsonMappingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }
针对上面问题,和同事讨论,最开始打算base64加密来传,然后发现base64加密中文出现问题,所以改成URLEncode的方式,前端加密两遍,后台在解密一遍
var params = JSON.stringify(writParamList); top.dialog({ id: noticeList, title:列表, width:900, height:500, url:${root}/notice/multiNoticeList.do?params=+encodeURI(encodeURI(params)), onclose:function(){ //location.reload(); }).showModal();
后台代码修改,解码一遍,然后发现在ie也正常
String params = request.getParameter("params"); logger.info("文书参数转换前:》》"+params); //params=StringEscapeUtils.unescapeJava(params); // byte[] buffer=Base64Utils.decodeFromString(params); // params = new String(buffer); try { params=URLDecoder.decode(params,"utf-8"); } catch (UnsupportedEncodingException e1) { e1.printStackTrace(); logger.info("文书参数转换后:》》"+params); ObjectMapper mapper = new ObjectMapper(); JavaType javaType = mapper.getTypeFactory().constructParametricType(List.class, ApprWritUnionFormModel.class); /*List FormModel writUnionFormList = JSON.parseArray(params, FormModel.class);*/ List FormModel writUnionFormList=new ArrayList FormModel try { writUnionFormList = (List FormModel )mapper.readValue(params, javaType); } catch (JsonParseException e) { e.printStackTrace(); } catch (JsonMappingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/17028.html
cjava相关文章
- 全世界都在说中国话?2022国际大数据竞赛首次以“中文”命题
- flvjs api 中文[通俗易懂]
- stm32数据手册boot_stm32f103中文手册.pdf
- Spring Boot + Elasticsearch实现大批量数据集下中文的精确匹配-案例剖析
- Excel表格中某一列的多行数据都出现数字+中文的数据,但我只要数字怎么处理?
- C++ 中文周刊 第91期
- dotnet 修复 Uno 中文乱码
- Abaqus软件下载,有限元分析软件Abaqus 2022中文激活版下载安装
- MySQL中文字符串长度研究(mysql中文长度)
- MySQL中文帮助文档:解锁技术之路(mysql中文帮助文档)
- MySQL如何存储时间格式?25字中文文章标题:MySQL时间格式存储(mysql存储时间格式)
- Linux轻松切换中文输入,让你的电脑更加便捷高效(linux切换中文输入)
- 化极大提升Linux体验:界面中文化之路(linux界面中文)
- 从Oracle到中文日期的转换技巧(oracle转中文日期)
- MySQL数据库如何支持中文数据存储?(mysql中文存储)
- 如何解决MySQL死锁问题?——25个中文字符的技巧指导(mysql死锁解决方法)
- 25字中文文章标题MySQL数据修改教程(mysql中修改数据指令)
- 25字中文文章标题:Linux命令行实用指南(linux中执行命令)
- 挖掘Oracle博客中的智慧(blog oracle 中文)
- 25字中文文章标题MySQL中创建表格的方法说明(mysql中关于创建)
- MySQL中如何支持存储和处理中文数据(mysql不能村中文数据)
- MySQL为何不能存储中文查漏补缺,让你的中文数据妥妥存储(mysql不能存储中文吗)
- 探索Oracle中文数据的未知之谜(oracle中文数据问号)
- 深入探究Oracle中文报错乱码问题(oracle中文报错乱码)
- 掌握oracle中文数据的查询技巧(oracle中文怎么查询)
- Oracle中文字符检验对中文输入的信任度(oracle中文字符检验)
- Redis集群支持中文字符的乱码神器(redis集群支持乱码)
- 使用Redis集合存储中文数据(redis 集合 中文)
- 使用Redis连接工具快速实现中文支持(redis连接工具中文)
- PHP中文分词的简单实现代码分享
- php图片加中文水印实现代码分享
- 在WCF数据访问中使用缓存提高Winform字段中文显示速度的方法