jsp的中文问题(100分)

J

jinsfu

Unregistered / Unconfirmed
GUEST, unregistred user!
我的机器配置是:win2000/tomcat4.0.1/jdk1.3.1/sql server2000
用jsp页面上传表单数据,英文没问题,但种文字符显示乱码。
我调用了getstr()函数,但仍然不行。
<%!
public String getstr(String str){
try{
String temp_p=str;
byte[] temp_t=temp_p.getBytes("ISO8859_1");
String temp=new String(temp_t);
return temp;
}catch(Exception fe){
out.println(fe.getMessage());
}
}
%>
 
W

wukw

Unregistered / Unconfirmed
GUEST, unregistred user!
去CSDN搜索一下吧,这种问题多的不能再多。
普通的页面不需要什么iso8859_1,有这句就行了。
<%@ page contentType="text/html;
charset=GB2312"%>
或者直接这样使用试一试:
String name1=new String(request.getParameter("user_id").getBytes("ISO8859_1")); // weblogic 6.1 之后就不用了。
byte[] messageTextTemp = request.getParameter("body").getBytes("ISO8859_1");
 
K

kylin_2000

Unregistered / Unconfirmed
GUEST, unregistred user!
是:"iso-8859-1"
 
L

lql0459

Unregistered / Unconfirmed
GUEST, unregistred user!
wukw说的没错!Good Luck!
 
J

jinsfu

Unregistered / Unconfirmed
GUEST, unregistred user!
我试过的方法有:
1、修改系统的区域设置。
2、在程序中加入<%@page contentType="text/html;charset=gb2312"%>
3、在classpath 中加入i18n.jar 的路径。
但还是不行。
还有一种方法是在jsp的zone配置文件中修改编译参数为:
compiler=builtin-javac-endoding ISO8859-1
但我没有找到zone配置文件。
感谢各位参与 !!!
 
K

kylin_2000

Unregistered / Unconfirmed
GUEST, unregistred user!
你没听见我说的吗?
把ISO8859_1改为:ISO-8859-1,我估计你又是被哪个挨千刀的出书者骗了……
 
J

jinsfu

Unregistered / Unconfirmed
GUEST, unregistred user!
kylin_2000
谢谢你,但我试过了,还是不行!
 
J

jinsfu

Unregistered / Unconfirmed
GUEST, unregistred user!
服务器给出的错误提示是:
Exception java.io.UnsupportedEncodingException must be caught, or it must be declared in the throws clause of this method.
byte[] temp_t=temp_p.getBytes("ISO-8859-1");
^
我到底该怎么办??
 
K

kylin_2000

Unregistered / Unconfirmed
GUEST, unregistred user!
在<head></head>之间加:
<meta http-equiv="Content-Type" content="text/html;
charset=iso-8859-1">
不行我也没办法了。
 
J

jinsfu

Unregistered / Unconfirmed
GUEST, unregistred user!
我都快绝望了!!!试过了,还是不行。
从数据库读取数据,显示中文字符没问题。就是上传数据不行!!
请各位高手继续关注!!!
 

曹晓钢

Unregistered / Unconfirmed
GUEST, unregistred user!
请看看这里:
http://www.dev-club.com/club/bbs/showEssence.asp?id=17078
 
W

wukw

Unregistered / Unconfirmed
GUEST, unregistred user!
http://www-900.ibm.com/developerWorks/cn/java/index.shtml
这里有几篇好文章,好好研究一下。
 
Q

qinyu1979

Unregistered / Unconfirmed
GUEST, unregistred user!
中文问题实在是很讨厌,因为这还与服务器有关,就wukw写的那段转换代码,在不同的服务器上
显示不一样,用tomcat4。0有问题,用jswdk也有问题,用tomcat3。1就行,weblogic也可以,而且
现在在tomcat3。1上面是能够正确插入数据库,但是在页面上显示的还是问号,看来还是选
大公司的产品比较好啊。。。。。。。。推荐ibm,bea。
 

曹晓钢

Unregistered / Unconfirmed
GUEST, unregistred user!
这个问题和什么公司出的基本没有什么关系。
首先,为了解决多语言问题,OS最好装英文版而非其它语言版本。
其次,我咨询了专家sonymusic,下面是他的回答:
SonyMusic says:
根据情况,你可能需要设置jdbc url中的连接串中使用unicode,并且指定charset
SonyMusic says:
叫它看jdbc的docment
 
Y

Yakuu

Unregistered / Unconfirmed
GUEST, unregistred user!
其实中文问题很简单,只是排列组合和编译时候没有控制字符转换。
像你现在的这个问题:
你设定jsp的charset之后,在插入数据库时又会转换到你的系统编码。
总之,多尝试排列组合一下就好。
而你
Exception java.io.UnsupportedEncodingException must be caught, or it must be declared in the throws clause of this method.
byte[] temp_t=temp_p.getBytes("ISO-8859-1");
这个问题,是异常捕捉:
用:
try{
byte[] temp_t=temp_p.getBytes("ISO-8859-1");
}catch(Exception ex){}
 

曹晓钢

Unregistered / Unconfirmed
GUEST, unregistred user!
jdbc driver里面控制了encoding,getBytes根本就是不需要的。
因为getBytes用起来异常繁琐。
 
Y

Yakuu

Unregistered / Unconfirmed
GUEST, unregistred user!
对了,我也建议不要用getBytes进行字符集转换,很容易乱。
最好只从charset着手。
 
J

jinsfu

Unregistered / Unconfirmed
GUEST, unregistred user!
曹晓钢, 你好:
我刚刚入门,好多东西都不是很明白,以后还要向您多多请教,您别笑话。
怎么设置jdbc url ?怎样察看jdbcdo
cument ?
我没用专门的jdbc 驱动程序。数据库发布时,我选的驱动程序是sql server 。
我这方面比较糊涂,您要是能给烁烁就更好了!!
 

曹晓钢

Unregistered / Unconfirmed
GUEST, unregistred user!
>我没用专门的jdbc 驱动程序。数据库发布时,我选的驱动程序是sql server 。
你是用什么来连接sql server的?
我推荐你一个jConnect,你可以在http://61.155.107.187/pub/Java_Develop_Tools/JSQLConnect.zip
下载。
然后看他附带的document.
这个jdbc driver就支持指定codepage的。在文档中可以看到例子:
Example to use the Greek codepage:
jdbc:JSQLConnect://ServerName:port/database=master/codepage=Cp1253
(简体中文好像是Cp1386还是Cp936的?我忘了,你要自己查一下)
 
J

jinsfu

Unregistered / Unconfirmed
GUEST, unregistred user!
to 曹晓钢:
首先谢谢你如此耐心,但我确实很笨!
我看书上介绍的使用jdbc-odbc桥是这样的:Class.forName("sun.jdbc.odbc.JdbcOdbcDriver)";
用jdbc-odbc桥需要数据库发布,用jdbc驱动程序就不用发布。
如果我用别的jdbc驱动程序应该怎么写?
现在我下载了Microsoft SQL Server 2000 JDBC,安装完了但不知道怎么用?
 
顶部