乱码.docx


立即下载 Fire ming
2024-04-20
编码 请求 String 提交 乱码 设置 UTF-8 Servlet 解析 格式
19.4 KB

解决中文乱码的几种解决方法
首先说明我的特殊情况:
1. 前台jsp中,我使用的是 form post 请求,设置了 enctype="multipart/form-data" ,页面编码格式都是utf-8
2. 后台中,我使用的是commons-fileUpload组件,ServletFileUpload 解析form表单和文件,
3. 设置 request.setCharacterEncoding("UTF-8");
4. 设置了ServletFileUpload .setHeaderEncoding("UTF-8");
5.Tomcat 的配置下面 server.xml  也已经设置了 URIEncoding="UTF-8";
至此,按道理所有的格式都匹配上了,前后对应,解析出来的肯定是utf-8,但是经过formfield解析出来后任然是ISO-8859-1格式的编码,
enctype="multipart/form-data" 会将数据以2进制的编码格式传递,因此我断定是 ServletFileUpload  解析时出了问题,多番查找,
我的问题 缺少 了一步String formFieldValue = fileItem.getString("UTF-8");
JSP和Servlet的六种中文乱码处理方法
一、表单提交时出现乱码:
在进行表单提交的时候,经常提交一些中文,自然就避免不了出现中文乱码的情况,对于表单来说有两种提交方式:get和post提交方式。所以请求的时候便有get请求和post请求。每种方式都有着不同的解决方法,之所以出现乱码,原因就在于get请求时,其传递给服务器的数据是附加在URL地址之后的;而post的请求时,其传递给服务器的数据是作为请求体的一部分传递给服务器。这也就导致了对它们所产生的乱码的处理方式是不同的。
1、客户端的get请求
get提交时, 容器以容器的编码 来编码 如果用的tomcat 默认的编码是iso-8859-1 在server.xml里面设置编码 或者
下面代码如
?
1 2 String name = request.getPara...("name"); String strName = new String(name.getByte("iso-8859-1"),"GBK");
对于不同的请求方式,解


编码/请求/String/提交/乱码/设置/UTF-8/Servlet/解析/格式/ 编码/请求/String/提交/乱码/设置/UTF-8/Servlet/解析/格式/
-1 条回复
登录 后才能参与评论
-->