今天学习文件上传时用到了form表单的提交,但是在后台看到提交的中文成了乱码。
此时,发现eclipse的工作区和工程的编码方式均为“UTF-8”,遂排除了编码的错误。
具体的原因
经多方查找,发现是Tomcat的解码方式默认是ISO-8859-1,而浏览器对中文数据的默认编码方式是“UTF-8”。因此,解码出现了乱码的情况。
问题的解决
在Servlet容器接收数据后,添加一行转码命令,比如:
name = fileItem.getString();
name = new String(name.getBytes("iso-8859-1"),"utf-8"); //更改编码方式address = fileItem.getString();
address = new String(address.getBytes("iso-8859-1"),"utf-8"); //更改编码方式
或者手动设置编码方式设为“ISO-8859-1”,解码方式为“UTF-8”:
address = fileItem.getString();
address = java.net.URLEncoder.encode(address,"ISO-8859-1");
address = java.net.URLDecoder.decode(address,"UTF-8");