最近遇到一个问题
spring-boot项目,收到对方get请求里面的中文,乱码。
get请求会经过url编码,里面的中文,同样也被转换,类似这样:
localhost:8080/callback/test?RetMsg=%B3%E4%D6%B5%CA%A7%B0%DC%A3%A1&Version=1.0
这串东西:%B3%E4%D6%B5%CA%A7%B0%DC%A3%A1 用gbk编码解出来就是“充值失败!”
用utf-8解出来就是乱码
因为对方是gbk编码,于是项目中配置一个 server.tomcat.uri-encoding: gbk
问题解决。
但是该项目并不是一个特定的项目,而是一个通用的项目,必须通过配置兼容各种编码,对于某一接入方来说是gbk,对于另外的接入方可能是utf-8
很明显,不能这样写死。
怎么办?
想到了在代码中处理,对乱码进行先url编码,再重新url解码
但是试了一些情况都没成功,比如上面举的那条例子,在配置文件中什么都不配置,然后用utf-8进行url编码或者iso-8859-1进行编码,再用本身的gbk编码&#x