java http 中文乱码_关于java发送http请求时中文乱码的一种解决办法
在jsp中常见的乱码解决办法无外乎是关于get和post两种方式的,但只有切实地在实践中使用时才会注意或者说注重到其他方式。例如,在http请求头中传送中文参数,出现乱码,如何解决?
实际场景:使用Spring提供的RestTemplate向WebService发送put请求,使用HttpHeader类装载需要传递的参数(包括中文)。请求端系统使用的是utf-8编码,而服务端使用的是gbk编码,使用http监听工具查看所发出的http请求信息,发现header中的中文参数乱码。
尝试的方法:
1. 在服务端接收到参数时,utf-8转gbk,无效。
2. 在服务端接收到参数时,iso-8859-1转gbk,无效。
3. 在发送请求前将中文参数转码,utf-8转iso-8859-1,无效。代码如下:
new String(remark.getBytes("UTF-8"), "ISO-8859-1")
4. 在请求端,HttpHeader设定ContentType为“application/json;UTF-8",无效。代码如下:
headers.setContentType(Media.valueOf("application/json;UTF-8"));
写到这里,有人应该感觉到这有点“病急乱投医”的感觉了,没有头绪地在试着各种方式。是的,起初我觉得是请求header中采用了ISO-8859-1的编码,但尝试后很显然不是;后来我觉着是否是RestTemplate中采用的HttpMessageConverter方式所决定的,但没能找到很好的证明方式,查资料说的是StringHttpMessageConverter默认采用的是ISO-8859-1编码,可我觉得我指定了ContentType为application/json,RestTemplate不应该去调用StringHttpMessageConverter啊,其中的原理还有待深究。个人感觉这种情况出问题的可能性最大。
最后,在网上看到一篇文章后,看了一种建议方式,并且是可行的,就是使用URLEncode,将中文参数在传参前进行encode。这里以GBK编码是为了在服务器端接收参数后无需再转码了,如下:
list.add(URLEncode.encode(name, "GBK"));
URLEncode方式可以解决这种特定场景的中文乱码问题,相信理解其原理后还可以运用到更多的场景。目前我在网上看到的,关于用URLEncode处理中文乱码最多的场景就是文件下载时中文文件名乱码。
关于Java中文乱码的原理及解决办法可以参看一下下面的链接,很有用。
java http 中文乱码_关于java发送http请求时中文乱码的一种解决办法相关推荐
- java指针乱跳_鼠标卡顿,指针乱跳,鼠标失灵的解决办法。 涨知识了
你是否经历过,鼠标卡顿,屏幕上指针乱跳,指针消失,等等鼠标失灵的窘境呢?那就跟着LZ来看看原因和解决办法. 工具/材料 只需要一颗好奇平静的心即可. 操作方法 01 现象1:鼠标卡顿.其表现是,经常无 ...
- mysql 迁移 乱码_迁移Windows下的MySQL时字符乱码问题
我们常常会直接复制一份MySQL的Data文件夹到新的环境下,正常情况下重新启动MySQL就可以使用.但有时也会遇到些问题: 1.程序訪问时提示找不到表,实际表已经存在 这样的情况是因为数据库全部者可 ...
- 安卓手机更新过程手机乱码_王者荣耀安卓更新更新时出现乱码解决办法
王者荣耀1月14日进行版本大更新了,一般情况下大版本更新容易出问题的是苹果,但这次反过来是安卓,包括更新卡在45%.资源包升级失败.解析包出现问题等情况,这些都如何解决呢?小编马上就给大家分享一下解决 ...
- js文件中发送ajax请求,ulr路径不起作用的解决办法
前言: 在写Python项目的时候,单独的js文件发送ajax请求,并不起效果并且提示路径错误 错误原因分析: {% url 'myadmin_updategoodsgrade' %} # 是模板中的 ...
- Java 的main方法中无法调用自身所在类的其他方法的两种解决办法
前言 编程时我们会发现有时main方法中调用自身所在的类的其他方法时,发现无法调用,错误调用情况如下 错误情况代码 此处第3行调用test方法报错 public class Demo1{public ...
- java项目----教务管理系统_基于Java的教务管理系统
java项目----教务管理系统_基于Java的教务管理系统 2022-04-22 18:18·java基础 最近为客户开发了一套学校用教务管理系统,主要实现学生.课程.老师.选课等相关的信息化管理功 ...
- 我的世界java版怎么输入不了汉字_我的世界中国版文字消失的6种解决办法
原标题:我的世界中国版文字消失的6种解决办法 告示牌和书,对于沙盒游戏的mc玩家而言,是极其重要的.然而中国版在<我的世界>一刀切地抹去文字这件事,饱受玩家争议,因为mc把"草方 ...
- java执行python返回null_[转]java调用python脚本以及通过Process.waitFor()直接调用python模块返回错误代码1的一种解决办法...
常见的java调用python脚本方式 通过jython提供的类库实现 通过Runtime.getRuntime()开启进程来执行脚本文件 通过jython提供的类库实现 通过jython实现的话,我 ...
- 解决 QT 发送 HTTP 请求时遇到 qt.network.ssl: QSslSocket::connectToHostEncrypted: TLS initialization failed 问题
解决 QT 发送 HTTP 请求时遇到 qt.network.ssl: QSslSocket::connectToHostEncrypted: TLS initilization failed 问题 ...
最新文章
- 天顶角Zenith方位角Azimuth
- Spring Boot 搭建 ELK,这才是正确看日志的方式!
- 一份简单的在 Linux下编译及调试 C 代码的指南
- CTF-pwn上的一次远程本地链接
- Spring Cloud-honghu Cloud分布式微服务云系统--云架构代码结构构建
- Python入门学习-DAY35-线程
- java给图片添加自定义文字信息
- dw添加下拉菜单_怎样用dreamweaver制作网站下拉菜单
- 【微信小程序】-授权获取微信绑定手机号两种方案
- echart视觉引导线的长度调节labelLine
- 基于android7.1+msm8937充电学习---概述(1)
- xposed模块开发第一篇
- 网络空间安全大赛简介
- window用户切换
- 大恒相机sdk二次开发 _c#从0开始新建winform窗体实现相机基础采集功能
- 网大网剧备案要避免的几大错误,内附最新备案流程!
- 对抗鲁棒性使得神经网络又强又怂
- 微信小程序如何发布小程序?
- 如何统计项目的代码行数
- 如何监控代理记账行业的客户信息安全?