出现乱码情况 按HTTP请求方式可分为三种
- POST,这种乱码其实最容易解决,以spring为例,设置过滤器强制转换字符编码为UTF-8即可。
- GET,中文字符在URL串中。
解决方法一:在后台取参数值的时候转码
如: String str = new String(param.getString("ISO-8859-1"),"UTF-8");
此办法确实可行,但在客户端请求字符编码不是ISO-8859-1时,将得不到正确的中文。
解决方法二:在发布中间件上增加URIEncoding="UTF-8"配置
此办法的缺点是,当中间件配置环境不可控或者其他应用需要其他编码的情况下,就没辙了。
解决方法三:客户端如JS 调用encodeURI方法将参数转码再传递。
个人认为此为最佳方案,可以有效弥补前面两种方法体现的缺点。服务端要增加解码的部分,URLDecoder.decode(str,"UTF-8")。
PS: JS转码要调用两次encodeURI,而Flex客户端则只需要调用一次。
- POST上传文件
为什么把这个单独拿出来说?因为上传的请求信息包含两部分,一个是request body,也就是发送文件二进制数据的部分。另一个是属性参数,如文件名等,这些参数与GET类似,是与URL一起发送的,所以如果用传统POST方式处理,文件名乱码是解决不了的。那么在此还是要套用GET的解决方法。
时间: 2024-10-10 10:48:37