添加一个filter,filter内容如下:
这里的关键是 这个 ,设置为 ,会覆盖掉 dubbox 默认的 编码。
这个问题的发生原因是 dubbox 使用的是 框架解析上传数据, 框架会判断 request 的 将 为 的 request 交给 包来解析,大致解析过程如下:
- 框架确定 Content-Type 为 multipart/form-data,这个常量定义在 jax 支持包的 MediaType 接口中;
- 框架将请求交给 MultipartFormDataReader ,这个 Reader 注解为 Provider,调用readForm 方法,解析请求;
- MultipartFormDataInputImpl 的 parse 方法解析 body 内容,读取数据,乱码发生在这个方法内部;
- MultipartFormDataInputImpl 的 parse 方法是继承自父类:MultipartInputImpl 的,解析过程稍微有点复杂,但是最终是通过构造 PartImpl 来表示每一个参数的。
- InputPart 来表示 Form 表单中每一项参数,PartImpl 是 InputPart 的一个实现类,构造的时候传入BodyPart,然后做解析,构造过程如下:
- 框架使用 MultipartFormDataInputImpl 读取 body 内容发生乱码,源代码注释如下。
默认的 Content-Type 在 MultipartInputImpl 中,定义如下,这个是成员初始化的默认值,在构造的时候可以覆盖掉。
默认的defalutPartCharst的初始化时在构造MultipartInputImpl的时候,在构造方法中,这个对象,每次请求都会new一个,所以是和request相关的:

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/180307.html