出现乱码情况 按HTTP请求方式可分为三种

  1. POST,这种乱码其实最容易解决,以spring为例,设置过滤器强制转换字符编码为UTF-8即可。

  2. 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客户端则只需要调用一次。

  3. POST上传文件

    为什么把这个单独拿出来说?因为上传的请求信息包含两部分,一个是request body,也就是发送文件二进制数据的部分。另一个是属性参数,如文件名等,这些参数与GET类似,是与URL一起发送的,所以如果用传统POST方式处理,文件名乱码是解决不了的。那么在此还是要套用GET的解决方法。