jsp+servlet中文问题,请教高手,散分大大的(100分)

  • 主题发起人 主题发起人 dragonmyp
  • 开始时间 开始时间
D

dragonmyp

Unregistered / Unconfirmed
GUEST, unregistred user!
我用jsp+servlet写了一个文件上传。在Win2000下成功。可是该死的头儿要改到linux下。
没办法。
但在linux下表单正常提交,没有问题。可用enctype="multipart/form-data"方式提交表单,提交上去的中文都变成乱码,请教高手,如何解决

在servlet中已经加入
response.setContentType("text/html;charset=gb2312");
request.setCharacterEncoding("gb2312");
并且已经试过8951_1,GBK,ISO-8859-1等编码
 
你是用什么方式实现上传文件的?我也刚好做了一个类似的servlet,在linux下面通过了阿。
 
把web.xml如下弄一下
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN" "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">
<web-app>
<context-param>
<param-name>weblogic.httpd.inputcharset./*</param-name>
<param-value>GBK</param-value>
</context-param>
</web-app>
 
我已经解决了。我用流的方式提交上去的
int formDataLength = request.getContentLength();
byte dataBytes[] = new byte[formDataLength];
int bytesRead = 0;
int totalBytesRead = 0;
int sizeCheck = 0;
while (totalBytesRead < formDataLength) {
sizeCheck = totalBytesRead + in.available();
bytesRead = in.read(dataBytes, totalBytesRead, formDataLength);
totalBytesRead += bytesRead;
}
关键是下面这句的"gb2312"或"GBK"。
String file = new String(dataBytes, "gb2312");
原因是:我虽然定义了编码,但在linux下,编译时的编码方式是ISO-8859-1(好像是),
所以文件流在写成字符串时变成了乱码。用上面这句就可以强制转换编码方式
谢谢上面两位老兄。
 
参考
http://www.java-cn.com
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
后退
顶部