当前位置: 首页 > news >正文

【问题解决:配置】解决spring mvc项目 get请求 获取中文字符串参数 乱码

get类型请求的发送过程

前端发送一个get请求的过程:

  1. 封装参数
  2. 进行URL编码,也就是将中文编码成一个带有百分号的字符串,具体可以在这个网站进行测试。http://www.esjson.com/urlEncode.html

在这里插入图片描述

  1. 进行Http编码,这里浏览器或者postman都是默认用ISO-8859-1标准进行编码。
  2. Tomcat收到请求后,进行解码,这里Tomcat默认采用ISO-8859-1进行解码。然后再利用URL标准进行解码。两次解码之后,我们就还原了这个(中文)字符串。
  3. 然后再接口内部就可以使用解析出来的参数对象了。

仔细想一下,编码到底是用来做什么的?其实是为了节约空间,UTF-8,GBK等均采用了不同的算法来表示世界上所有的字符。

我们为什么要有这么多编码呢?因为世界上的语言太多啦,每种编码标准都或多或少的偏向某一种语言,比如GBK中的GB就是表示“国标”的意思,用它来编码汉字,比UTF-8更加节约空间。

但是用GBK来表示韩文呢?日文呢?未必有UTF-8高效,具体要根据他们的编码规则进行分析,这里只是举个例子。

而无论哪一种编码,它都要对应到最终的一个通用的字典里,这个貌似叫做Unicode字典,这个字典包含了全世界存在的所有字符,进而就得到了我们的对象。

为什么不直接传输Unicode编码?可以,但是传输起来不如编码节约空间,考虑Huffman编码。

写Java的门槛太低了,这些从业者在网上大肆发帖子,造成了良莠不齐的现象。之前在配置环境的时候为了解决win下开发spring项目的控制台乱码问题,参考了网上的一些帖子。结果稀里糊涂,把server.xml里的URIEncoding改成了UTF-8,这对于浏览器就不通用了,因为浏览器默认采用的就是ISO-8859-1进行编码。

因此,造成了乱码问题。

解决方案

找到Tomcat目录下的conf目录,然后进入,打开server.xml文件,找到第一个connector标签,检查里面是否存在 URIEncoding 这个属性,如果有,把里面设置的 URIEncoding 去掉:

    <!-- A "Connector" represents an endpoint by which requests are receivedand responses are returned. Documentation at :Java HTTP Connector: /docs/config/http.html (blocking & non-blocking)Java AJP  Connector: /docs/config/ajp.htmlAPR (HTTP/AJP) Connector: /docs/apr.htmlDefine a non-SSL HTTP/1.1 Connector on port 8080--><Connector port="8080" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443"/>

注:由于时间仓促,本文没有深入进行校验文献,只是凭借着自己的一些基础知识理解写成,如有错误,欢迎评论区指出,谢谢!

http://www.lryc.cn/news/196720.html

相关文章:

  • python每日一练(9)
  • JVM第十四讲:调试排错 - Java 内存分析之堆内存和MetaSpace内存
  • 【1day】泛微e-office OA SQL注入漏洞学习
  • 线上问题:所有用户页面无法打开
  • RabbitMQ和spring boot整合及其他内容
  • iperf3交叉编译
  • TARJAN复习 求强连通分量、割点、桥
  • python实现批量数据库数据插入
  • python安装,并搞定环境配置和虚拟环境
  • Flink 的集群资源管理
  • STM32学习笔记
  • Java应用性能问题诊断技巧
  • 监控系列(六)prometheus监控DMHS操作步骤
  • SLAM从入门到精通(dwa速度规划算法)
  • 嵌入式实时操作系统的设计与开发(aCoral线程学习)
  • JAVA基础(JAVA SE)学习笔记(二)变量与运算符
  • chatgpt 接口 和 jupyter版本安装
  • ubuntu20.04 nerf开山之作
  • Java 中实现单例模式
  • 标签页的使用
  • 新一代开源语音库CoQui TTS冲到了GitHub 20.5k Star
  • CSS 效果:多列文字,第一行对齐,flex方式元素被挤压
  • 优维低代码实践:片段
  • 【计算机网络】第一章、计算机网络体系结构
  • vr火灾逃生安全科普软件开展消防突击教育安全有效
  • Kafka SASL认证授权(五)ACL源码解析
  • logback-spring.xml 中根据不同的业务表示,分类打印到不同的文件夹、时区动态设置
  • linux系统编程之一
  • 【LeetCode】《LeetCode 101》第十三章:链表
  • Electron webview 内网页 与 preload、 渲染进程、主进程的常规通信 以及企业级开发终极简化通信方式汇总