问一个有关中文的问题!

02-09-14 andrawu
<%@ page contentType="text/html;charset=gb2312"%>
<%
String sName = "中文文件.txt" ;
//在jsp中对于中文文件的下载,象下面这样是不行的 。
out.println("<a href='/test/"+sName+"' target=_brank>"+sName+"</a>") ;

//如果这样的话好象在Tomcat4以上才可以,而在Tomcat3.2不行。
out.println("<a href='/test/"+java.net.URLEncoder.encode(sName)+"' target=_brank>"+sName+"</a>") ;
%>

不知有没有好的方法解决中文文件的下载问题。

andrawu
2002-09-14 18:57
String sName = "中文文件.txt" ;
//在jsp中对于中文文件的下载,象下面这样是不行的 。
out.println("<a href='/test/"+sName+"' target=_brank>"+sName+"</a>") ;

//如果这样的话好象在Tomcat4以上才可以,而在Tomcat3.2不行。
out.println("<a href='/test/"+java.net.URLEncoder.encode(sName)+"' target=_brank>"+sName+"</a>") ;

不知有没有好的方法解决中文文件的下载问题。

andrawu
2002-09-14 18:59
//如果这样的话好象在Tomcat4以上才可以,而在Tomcat3.2不行。
用java.net.URLEncoder.encode(sName)

banq
2002-09-15 14:11
中文问题是恶梦,tomcat 3和tomcat 4是两个相对独立的体系,这也是open source的问题所在。

andrawu
2002-09-17 11:08
问题解决了,就用Tomcat4.0就没有问题了。

andrawu
2002-09-17 14:33
oracle 8i中数据库里的汉字 都是 0xE5BCA0E6B2BB 这种乱七八糟的东西

我查出了造成此现象是因为用了
sqlStmt = sqlCon.createStatement(java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY);
主要是用了java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY设置了光标,出现了中文问题,这种现象不是应该不是乱码问题,应该是字符集的问题,用new String(sDB.getBytes("gb2312"),"iso-8859-1")是解决不了问题的。
如果你用sqlStmt = sqlCon.createStatement();就不会有这种现象了。但这样就不能支持jdbc2.0了,光标不能定位了。

用试了有没有出现上面的这种情况。
sqlStmt = sqlCon.createStatement();
strSQL = "select * from zztest";
sqlRst = sqlStmt.executeQuery(strSQL);
if (sqlRst.next())
out.println(sqlRst.getString(1)+"--|--"+sqlRst.getString(2)) ;

个人感觉是可能nls_charset12.zip版本太低了!是不是这个原因啊。

该死的中文问题,我真是烦死了。痛苦ing......

freedomjdon
2003-07-30 20:23
在insert的时候也要用.getBytes();
比如:st.setString(1,new String(str.getBytes()));
str.getBytes()采用系统默认的字符集。我做过一个邮件系统的数据库,就是这样解决中文乱码问题的。