Webflux是Spring中一个非阻塞的框架,使用方式类似SpringMVC.最近用该框架做了个网关服务的重构.因为其中遇到了些问题.比较难解决的就是这个GET请求如果包含中文且发送时候没有用URL编码的话,直接就乱码了.无法进行后续的处理了.报错如下:

org.springframework.http.server.reactive.ReactorHttpHandlerAdapter - Invalid URL for incoming request: Illegal character in query at index

发现这个问题后.首先尝试通过Filter的方式来解决乱码问题.按照官方文档增加了filter.发现ReactorHttpHandlerAdapter这个方法是在filter之前执行.该方法尝试失败.

后面通过查看netty源码发现其最后会调用 HttpServerCodec.decode  到

HeaderParser.process 方法使用的是ASC解码的方式.每次读取的是一个byte位信息.故而产生了乱码.要想解决这个问题.那么需要做类似于tomcat的 URIEncoding="utf-8"的设置应该就可以解决改问题.后面查看官方文档.没有找到如何设置.到此该方法展示无效了.顺便给官方提交了一个issues

理论上应该是可以设置的.如果你知道方法可以留言告诉我.

这个方法也行不通.那我打算直接从底层的服务器容器下手来解决该问题.因为官方文档上指出webflux的底层容器是支持tomcat,jetty,servlet3.1+,netty等方式.因为jetty默认就是支持URIEncoding="utf-8"的,所以这里我直接用jetty来对默认的netty容器进行替换.

只需要修改pom文件如下:

    <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-webflux</artifactId><exclusions><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-reactor-netty</artifactId></exclusion></exclusions></dependency><!-- use jetty default URIEncoding is UTF-8 ,Chinese GET request garbled --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jetty</artifactId></dependency>

再次运行后,发现已经解决该问题了

webflux解决get请求中文乱码问题相关推荐

  1. 解决get请求中文乱码问题

    在很多情况下get请求会发生中文乱码的情况,而换做post就不会,这其中的根本原因是get请求默认的是使用"iso-8859-1"编码,接下来介绍两种种解决get请求编码的方法 1 ...

  2. 解决Post请求中文乱码问题

    Web应用的中文乱码由来 1.Tomcat默认使用字符集ISO-8859-1,属于西欧字体集 2.解决乱码的核心思路是将ISO-8859-1转换为UTF-8 3.Servlet中求请与响应都需要设置U ...

  3. postmain请求中午乱码_完美解决Get和Post请求中文乱码的问题

    对于Post请求,只需在Servlet或者jsp中写入如下代码就可以把解决从表单中传入的中文乱码问题 request.setCharacterEncoding("utf-8"); ...

  4. 010_Post请求中文乱码

    一. 创建一个GBK编码的html文件, 发送post请求 1. 新建一个PostLuanMa的Web工程 2. 新建一个postGBK.html文件 3. 更改postGBK.html编码为GBK ...

  5. python idea控制台中文乱码_python 解决cv2绘制中文乱码问题

    python 解决cv2绘制中文乱码问题 因为使用cv2.putText() 只能显示英文字符,中文会出现乱码问题, 因此使用PIL在图片上绘制添加中文,可以指定字体文件. 大体思路: OpenCV图 ...

  6. 【Servlet】HTTP请求中文乱码的问题

    请求中文乱码 在进行请求参数传递时,经常会遇到请求数据为中文时的乱码问题,当Form表单的文本域中输入中文时会产生乱码问题,出现乱码的原因与客户端的请求编码方式(GET请求或POST请求)以及服务器的 ...

  7. 解决POST提交中文乱码问题

    spring提供的,专用于解决POST提交中文乱码问题,需要在web.xml中配置 <!-- 注册spring提供的针对POST请求的中文乱码问题 --><filter>< ...

  8. php运行显示中文乱码,如何解决PHP界面显示中文乱码的问题

    如何解决PHP界面显示中文乱码的问题 发布时间:2020-07-14 15:19:00 来源:亿速云 阅读:74 作者:Leah 这期内容当中小编将会给大家带来有关如何解决PHP界面显示中文乱码的问题 ...

  9. ASP+Access中文乱码的解决方法,ASP中文乱码,asp乱码问题

    确保编码声明正确(例:时尚淘女之家http://www.tao36524.com) 如果您使用的是国外空间,默认是西欧而不是GB2312,你可以通过强制为GD2312的方式! 在数据提取页面的第一行代 ...

  10. Spring-解决请求中文乱码问题

    Spring-解决请求中文乱码问题 参考文章: (1)Spring-解决请求中文乱码问题 (2)https://www.cnblogs.com/andyfengzp/p/6197993.html (3 ...

最新文章

  1. Box2dの自定义多边形
  2. PuTTY 设置Serial(ubuntu)
  3. java getselecteditem_java – 将getSelectedItem()从JComboBox转换为int或任何其他东西
  4. 来及Java空间的传送门2
  5. oracle 10g分区表,oracle10g--11gR2分区表汇总四
  6. maven的依赖和聚合
  7. android phone win10下载,微软Your Phone新功能: 可在Win 10 PC 上运行 Android 应用程序...
  8. Redis容量及使用规划(转)
  9. 小米线刷包需要解压么_小米10刷机教程,线刷升级更新官方系统包
  10. 跨平台应用开发进阶(四) :uni-app 实现上传图片
  11. cocos2d-html5教程之重要概念
  12. w3af 安装并配置桌面和快速启动栏
  13. 用降群的方法来解算还原魔方的步骤C++
  14. 玩战塔英雄不显示服务器,王者荣耀的这个问题,国家点名了仍没有改正过来!战塔英雄就没有...
  15. 订单能否按时交期?制造企业必须面对这几个问题
  16. 第一次找工作/实习前需要准备的东西(互联网行业)
  17. [BUUCTF]第七天训练日志
  18. centos修改系统可用内存_centos7开启交换内存
  19. OSS异常:com.aliyun.oss.ClientException:UnknownHost
  20. 手握119亿美元捐赠基金!美国密歇根大学宣布正式进军加密市场

热门文章

  1. vue项目实战-电商后台管理系统
  2. 怎么不带卡、刷手机进出图书馆---手机NFC
  3. 用matlab符号计算求解二元函数极值
  4. 内网DNS重要使用作用
  5. 【冒泡排序】c++实现冒泡排序代码
  6. SwitchHosts-一款实用的host地址切换工具
  7. 优酷的kux格式怎么转换成mp4?教你快速转换的方法
  8. ESP8266 wifi模块代码详解
  9. android 消息推送js,消息推送方式
  10. 中国所有省市区的ip经纬度接口