web项目乱码的问题处理

Updated on in 程序人生 with 0 views and 0 comments

最近处理了一个上传文件后乱码的问题,下午无心工作,写此文记录此次事故。

项目使用struts1作为MVC框架,在项目运行过程中,出现了文件上传中文乱码的问题。

经排查,发现是代码在后端获取了输入流,读取存储到一个字节数组,但是在将字节数组转成字符串的时候,没有指定编码,导致后面的程序拿到的文件名一直是乱码,此处建立字符串指定编码即可解决。

new String(m_binArray, start, (end - start) + 1,"GBK");

web项目乱码的问题处理,万变不离其宗,进行下述操作一般可以解决。

  1. 将页面的编码和后端的编码统一设置
<%@ page language="java"  pageEncoding="GBK"%>
 request.setCharacterEncoding("GBK");
        response.setCharacterEncoding("GBK");
  1. 后端过滤器统一处理编码
  2. form表单提交的编码也要设置
accept-charset="GBK" enctype="multipart/form-data"

如果确定前后端编码都是统一的,表单也设置了,那就查找看看是不是哪里对request中存储的数据流做了加工处理,我遇到的就是这种情况,有人DIY了一个文件上传的类,在这个类中对流进行了处理,转换成对象进行了封装,导致后面的代码拿到的request中的对象一直是乱码。

总结:自己封装了的方法,一定要反复测试在给别人用,在生产环境中,尤其是在工期较紧的情况下,尽量使用开源的组件,自己封装的组件一定要写注释和相关文档,方便后期维护组件,处理问题。


标题:web项目乱码的问题处理
作者:wenyl
地址:http://www.wenyoulong.com/articles/2021/04/30/1619765350138.html