form类型为multipart/form-data的乱码问题
在action中
......
import org.apache.commons.fileupload.DiskFileUpload;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUpload;
import org.apache.commons.fileupload.FileUploadException;
.....
action中调用getData方法获取表单数据,可是中文都是乱码,而且同一台服务器,数据库为orale则没有问题,换db2就是乱码.试过iso8859_1转码也不行,直接对request.setCharacterEncoding("gb2312");也不行.
/**
* getData
* 取得表单传递来的数据,包括基本信息、上载的图片、压缩文件及其名称
* @param HttpServletRequest Request
* @param HttpServletResponse Response
* @throws Exception
* @return
*/
private void getData(
HttpServletRequest Request,
HttpServletResponse Response) throws Exception {
try {
//检查输入请求是否为multipart的表单数据
boolean isMultipart = FileUpload.isMultipartContent(Request);
if (isMultipart) {
DiskFileUpload upload = new DiskFileUpload();
List items = null;
try {
//为该请求创建一个句柄,通过它来解析请求
items = upload.parseRequest(Request);
}
catch (FileUploadException fue) {
......
}
Iterator iterator = items.iterator();
while (iterator.hasNext()) {
FileItem item = (FileItem) iterator.next();
//检查当前的项目是普通的表单元素,还是一个上载的文件
if (item.isFormField()) {
//获得表单域的名字
String fieldName = item.getFieldName();
if (fieldName.equals("themeFloder")) {
themeFloder = item.getString();
}
if (fieldName.equals("themename")) {
themename = item.getString();
}
if (fieldName.equals("themeSpec")) {
themeSpec = item.getString();
}
}
......