commons-fileupload中文乱码解决办法

fileupload乱码在1.0的版本之前一直存在,非常恼人的bug。

据说在1.0之后的版本中已经得到修复,因为要做个微信公众平台的工具,需要使用这个jar包。不凑巧,让我碰到这个问题了。

在只是用form表单的情况下,通过request的getParameter方法,只要jsp以及servlet中都用utf8编码,是不会出现乱码的。但是使用了fileupload这个jar包,获得的表单input内容,就会出现乱码,排查了很久总算找到了问题。

fileupload得到的表单数据,是使用”iso8859-1“编码的,而我在servlet以及mysql中使用的编码都是utf8,因此需要一个转换的步骤:

String newStr=new String(tmpStr.getBytes(“iso8859-1″), “utf8″);

即可将获得表单内容,从iso8859-1转换为utf8,中文正常使用。

 

AWS使用的一点心得

一、注册、申请、安装什么的就不讲了,网上的教程一大把;
二、服务器的安装配置:
1.Nginx安装:
使用aptitude安装即可,要注意的就是,需要更新安装源。
操作方法是编辑:/etc/apt/source.list文件,可以将国内163、souhu的源写进去,AWS服务器在国外,但是速度仍然不错,尤其安装这种小软件,分分钟的事情;

2.Tomcat安装:
方法有两种,一种是通过aptitude安装;另一种是直接下载binary安装包,解压即可运行,分别介绍:
aptitude方式:安装很简单,但需要配置。linux默认情况下将1024以下的端口全部封掉了,因此tomcat无法与80端口进行绑定,只能用默认的8080端口进行访问。我使用AWS的目的是要用微信公众平台,无法使用8080端口。在网上找了一圈,终于尝试出一个解决办法,通过修改文件:/etc/default/tomcat7,添加一行:AUTHBIND=YES.作用是可以让tomcat7与80端口绑定,开放80端口;然后修改tomcat的配置文件server.xml,将8080端口改为80端口;
binary包方式:解压即可,在bin目录下运行:./startup.sh,即可启动tomcat服务。tomcat7有一个测试配置文件的功能,运行./configuratest.sh,可能您的tomcat能启动,但是未必能访问(端口未开放的情况下),此处比aptitude方式要多一个步骤。默认情况下,即使已经按照aptitude方式添加的端口,但是linux默认情况下,非root用户是无法将1024以下的端口绑定应用程序的。
今天的配置的时候饶了圈子,开始尝试用aptitude方式安装的tomcat7使用手动安装的webapps目录(更改server文件),但是无法上传文件。后面后尝试用Ngnix的proxy方式,仍然不见效。最终找到一个方法,用sudo的方式运行启动脚本,root帐号可以绑定80端口,果然ok。
3.Mysql安装
间的使用aptitude即可,但是AWS用的镜像是不能使用中文字符的。因此select数据库时,显示的结果是乱码。刚开始还以为是程序问题,在本地测试的时候也有过乱码,虽然解决了,还以为是linux系统的问题。该了local文件,不见效。但是测试微信公众平台的时候,接受的微信消息正常,才明白过来,原来linux的显示问题。
三、一点系统操作的笔记
1.重启、关闭服务:/etc/init.d/servername start|reload|stop;
2.常用的系统配置文件:
host:/etc/host;
dns:/etc/resolv.conf
系统字符:/etc/default/locale,/etc/profile,添加方式为:LANG=”“;
locale-gen:使字符集生效;
source /etc/profile:使profile文件生效;
3.常用的命令:ps -aux | grep tomcat7:查看是否有tomcat的进程;
netstat -ant | grep 80查看80端口是否正在监听;
4.Mysql命令:
source  name.sql,向数据库导入sql文件的内容;
show full columns from tablename:查看表的columns的字符集;

Go back to top