在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请求时中文乱码的一种解决办法相关推荐

  1. java指针乱跳_鼠标卡顿,指针乱跳,鼠标失灵的解决办法。 涨知识了

    你是否经历过,鼠标卡顿,屏幕上指针乱跳,指针消失,等等鼠标失灵的窘境呢?那就跟着LZ来看看原因和解决办法. 工具/材料 只需要一颗好奇平静的心即可. 操作方法 01 现象1:鼠标卡顿.其表现是,经常无 ...

  2. mysql 迁移 乱码_迁移Windows下的MySQL时字符乱码问题

    我们常常会直接复制一份MySQL的Data文件夹到新的环境下,正常情况下重新启动MySQL就可以使用.但有时也会遇到些问题: 1.程序訪问时提示找不到表,实际表已经存在 这样的情况是因为数据库全部者可 ...

  3. 安卓手机更新过程手机乱码_王者荣耀安卓更新更新时出现乱码解决办法

    王者荣耀1月14日进行版本大更新了,一般情况下大版本更新容易出问题的是苹果,但这次反过来是安卓,包括更新卡在45%.资源包升级失败.解析包出现问题等情况,这些都如何解决呢?小编马上就给大家分享一下解决 ...

  4. js文件中发送ajax请求,ulr路径不起作用的解决办法

    前言: 在写Python项目的时候,单独的js文件发送ajax请求,并不起效果并且提示路径错误 错误原因分析: {% url 'myadmin_updategoodsgrade' %} # 是模板中的 ...

  5. Java 的main方法中无法调用自身所在类的其他方法的两种解决办法

    前言 编程时我们会发现有时main方法中调用自身所在的类的其他方法时,发现无法调用,错误调用情况如下 错误情况代码 此处第3行调用test方法报错 public class Demo1{public ...

  6. java项目----教务管理系统_基于Java的教务管理系统

    java项目----教务管理系统_基于Java的教务管理系统 2022-04-22 18:18·java基础 最近为客户开发了一套学校用教务管理系统,主要实现学生.课程.老师.选课等相关的信息化管理功 ...

  7. 我的世界java版怎么输入不了汉字_我的世界中国版文字消失的6种解决办法

    原标题:我的世界中国版文字消失的6种解决办法 告示牌和书,对于沙盒游戏的mc玩家而言,是极其重要的.然而中国版在<我的世界>一刀切地抹去文字这件事,饱受玩家争议,因为mc把"草方 ...

  8. java执行python返回null_[转]java调用python脚本以及通过Process.waitFor()直接调用python模块返回错误代码1的一种解决办法...

    常见的java调用python脚本方式 通过jython提供的类库实现 通过Runtime.getRuntime()开启进程来执行脚本文件 通过jython提供的类库实现 通过jython实现的话,我 ...

  9. 解决 QT 发送 HTTP 请求时遇到 qt.network.ssl: QSslSocket::connectToHostEncrypted: TLS initialization failed 问题

    解决 QT 发送 HTTP 请求时遇到 qt.network.ssl: QSslSocket::connectToHostEncrypted: TLS initilization failed 问题 ...

最新文章

  1. 天顶角Zenith方位角Azimuth
  2. Spring Boot 搭建 ELK,这才是正确看日志的方式!
  3. 一份简单的在 Linux下编译及调试 C 代码的指南
  4. CTF-pwn上的一次远程本地链接
  5. Spring Cloud-honghu Cloud分布式微服务云系统--云架构代码结构构建
  6. Python入门学习-DAY35-线程
  7. java给图片添加自定义文字信息
  8. dw添加下拉菜单_怎样用dreamweaver制作网站下拉菜单
  9. 【微信小程序】-授权获取微信绑定手机号两种方案
  10. echart视觉引导线的长度调节labelLine
  11. 基于android7.1+msm8937充电学习---概述(1)
  12. xposed模块开发第一篇
  13. 网络空间安全大赛简介
  14. window用户切换
  15. 大恒相机sdk二次开发 _c#从0开始新建winform窗体实现相机基础采集功能
  16. 网大网剧备案要避免的几大错误,内附最新备案流程!
  17. 对抗鲁棒性使得神经网络又强又怂
  18. 微信小程序如何发布小程序?
  19. 如何统计项目的代码行数
  20. 如何监控代理记账行业的客户信息安全?

热门文章

  1. 关于sql注入这一篇就够了(适合入门)
  2. 分治法解决矩阵乘法问题
  3. AWS 推出增强的 Elasticsearch 开源发行版; 英国发行纪念霍金的硬币
  4. 同济大学计算机系陈永生,陈永生
  5. BC26 OpenCPU Time API接口
  6. 鼠标突然变慢或变快:有多个键多功能的鼠标误触
  7. c# exe发布后运行获取管理员权限
  8. 人均劳动生产率的计算方法_劳动生产率是怎么计算?
  9. ocx开发经验,ActiveX开发快速入门
  10. (影视小程序)最新修复版修复前端独立接口去授权版