要回复请点击:http://dev2dev.bea.com.cn/bbs/dispbbs.jsp?tid=633&id=1

回复: 14   共: 2页   [ 1 2 下一页 最后一页 ]

aegean


发贴数量: 27 个
级别:新手上路
注册时间: 2002年08月
登录次数:34次


weblogic7.0的中文(日文)问题 发表时间: 2002-08-23 11:39
我的程序通过jsp + servlet来操作Oracle数据库,使用oracle自己带的驱动(classes12.zip, 8.1.7版本).
在weblogic6.1下,中文日文都没有问题,在weblogic7.0下却都是乱码,换成9i的驱动还是乱麻,怎么解决?
回复 发送短信息

yhuang


发贴数量: 57 个
级别:新手上路
注册时间: 2002年08月
登录次数:27次


Re:weblogic7.0的中文(日文)问题 发表时间: 2002-08-23 12:43
对于乱码问题,最根本的是需要确切知道是在那一步操作(client-->servlet/jsp(other components)-->db-->(other components)servlet/jsp-->client)的时候乱的。

下面是我们一位工程师对常见中文问题的总结,供参考:
情况一:JSP 文件中的中文提示信息不能正确显示
解决方法:在JSP 文件中加入
<%@ page contentType=“text/html; charset=GBK“ %> 可以解决这个问题
情况二:JSP文件中包含中文提示信息时,不能正确编译
解决方法:在weblogic.xml文件的<jsp-descriptor>部分加入
<jsp-descriptor>
<jsp-param>
<param-name>compilerSupportsEncoding</param-name>
<param-value>true</param-value>
</jsp-param>
<jsp-param>
<param-name>encoding</param-name>
<param-value>GBK</param-value>
</jsp-param>
</jsp-descriptor>
可解决这个问题。
情况三:从数据库中检索出来的中文显示不正确时,在这种情况下,如果数据库使用的是中文字符集,并使用的是Type 2 Jdbc Driver时,对于Weblogic 而言,当使用其提供的oci driver时,可加入Weblogic.codeset=GBK的属性可解决这个问题
情况四:在JSP文件之间传递中文时,如果不能正确传递中文数据,可在web.xml文件中加入
<context-param>
<param-name>weblogic.httpd.inputCharset./*</param-name>
<param-value>GBK</param-value>
</context-param>
可解决这个问题。
情况五:为使浏览器能正确显示中文,应在 HTML <HEAD> 部分增加:
<meta http-equiv="Content-Type" content="text/html" charset="gbk">
回复 发送短信息

airwing


发贴数量: 14 个
级别:新手上路
注册时间: 2002年08月
登录次数:13次


Re:weblogic7.0的中文(日文)问题 发表时间: 2002-08-23 14:16
情况一,只是提示浏览器使用什么编码解析html,不是根本的乱码问题,也就是客户端可以直接习惯浏览器编码方式
情况二和情况四,在我碰到乱码时从没有生效过
情况三也不够全面
我几次做项目加上每次劳烦BEA工程师大驾,一起总结出的经验主要是,从客户端语言地区设置-weblogic所在操作系统语言地区设置-java编译选项-数据库语言地区设置,这些设置要完全一致,你才能正确看到中文。
客户端语言地区设置:客户端主要使用windows平台,一般应该没有问题。我只在别人的案例里看见过有修改客户端语言地区设置,如果你实在穷途末路,再考虑这个。
weblogic所在操作系统语言地区设置:如果是中文windows,应该也没有什么问题。如果是unix/linux,那么要在启动weblogic的用户的profile里加上LANG=zh,具体的语言,要看你的操作系统而定。注意你如果是su切换用户,一定要su - xxx,不然也会乱码。
java编译选项:这个我一般都会加上,在我的系统里使用ant,我会在build.xml里加上encoding,一般指示javac -encoding GB2312。
数据库语言环境设置:这个我不是特别熟悉,一般你用pl/sql能正确往数据库插入中文记录,那么你就别期望指责数据库了。

最后给一个救命绝招,request.setCharaterEncoding("GB2312")。在你实在没辙的时候,试试这个。但是这个使用起来要谨慎,它如果执行1次以上,也会出现乱码。而且不一定适应所有平台环境,想想你的系统写好了一堆jsp,结果跑到客户那里安装不正确,难道你要修改所有的页面吗?

一点点经验,不对的地方,欢迎指教讨论
回复 发送短信息

chinawhite


发贴数量: 18 个
级别:新手上路
注册时间: 2002年08月
登录次数:19次


Re:weblogic7.0的中文(日文)问题 发表时间: 2002-08-23 16:49
在 platform7.0上我还有一个中文问题始终还是没解决,那就是获取浏览器提交(POST方式和GET方式)的数据,始终不正确,不论直接输出到JSP页面,还是插入数据库后从数据库里来查看。我已经在 Web app Descriptor里的JSP Descriptor里设置了Encoding=gb2312,其结果是在weblogic.xml里加了一段
<jsp-param>
<param-name>encoding</param-name>
<param-value>gb2312</param-value>
</jsp-param>
但是还是不起作用。(用request.setCharacterEncoding是可以,但是我始终觉得不应该用程序来管这事)

另外两个地方的问题,一是JSP显示中文,只需要设置ContentType就可以,二是数据库中文问题在连接池属性里加一个 weblogic.codeset=gb2312就可以了。
此文被chinawhite在2002/08/23 16:52:05修改!
回复 发送短信息

chinawhite


发贴数量: 18 个
级别:新手上路
注册时间: 2002年08月
登录次数:19次


Re:weblogic7.0的中文(日文)问题 发表时间: 2002-08-23 17:19
刚刚终于弄明白“Resource Path”的意思,FORM提交中文的问题可以解决了,设置“Web application deployment descriptor”,增加一个Charset Params,Input Charset Descriptor,
Resource Path = "/*"
Java Charset Name="gb2312"
之后别忘了Persist。

操作的结果是在 weblogic.xml里增加了一段:

<charset-params>
<input-charset>
<resource-path>/*</resource-path>
<java-charset-name>gb2312</java-charset-name>
</input-charset>
</charset-params>

因此也可以直接修改 weblogic.xml。但推荐还是使用Console来改。
回复 发送短信息

yhuang


发贴数量: 57 个
级别:新手上路
注册时间: 2002年08月
登录次数:27次


Re:weblogic7.0的中文(日文)问题 发表时间: 2002-08-23 17:33
当你的weblogic运行环境是西文时,一下一定要做:
编译代码时加上encoding GBK选项
指定JSP编译时的encoding选项,也就是“情况二”所提及的
使用JSP的page命令来指定content-type。不过大部分情况下不是一定要做,因为WLS能从JSp编译的encoding那边获取应该使用的编码类型。

不好意思,有事情要出去了,以后在贴
回复 发送短信息

aegean


发贴数量: 27 个
级别:新手上路
注册时间: 2002年08月
登录次数:34次


Re:weblogic7.0的中文(日文)问题 发表时间: 2002-08-23 19:51
那么对日文改怎么写,把GBK换成shift_jis吗?我是日文2000, 用的驱动是classes12.zip
此文被aegean在2002/08/23 20:14:28修改!
回复 发送短信息

ons


发贴数量: 3 个
级别:新手上路
注册时间: 2002年08月
登录次数:5次


Re:weblogic7.0的中文(日文)问题 发表时间: 2002-08-24 01:56
在servlet2.3中读取request的参数前要求调用request.setCharacterEncoding("GB2312")。

对于Weblogic6.1sp2及其之后的都需要.
此文被ons在2002/08/24 02:00:58修改!
回复 发送短信息

aegean


发贴数量: 27 个
级别:新手上路
注册时间: 2002年08月
登录次数:34次


谢谢大家 发表时间: 2002-08-26 11:48
日文已经没有问题啦,中文还没测试,估计会ok,先谢谢大家
回复 发送短信息

airwing


发贴数量: 14 个
级别:新手上路
注册时间: 2002年08月
登录次数:13次


Re:weblogic7.0的中文(日文)问题 发表时间: 2002-08-26 11:53
加Resource Path有用吗?我是没成功过
回复 发送短信息

ywgan


发贴数量: 9 个
级别:新手上路
注册时间: 2002年08月
登录次数:4次


Re:weblogic7.0的中文(日文)问题 发表时间: 2002-08-26 16:07
在获取form提交的中文时,还有一个办法
new String(request.getParameter("para1").getBytes("ISO-8859-1"))
这样就可以得到正确的unicode字符串
回复 发送短信息

zmrljl


发贴数量: 19 个
级别:新手上路
注册时间: 2002年08月
登录次数:17次


Re:weblogic7.0的中文(日文)问题 发表时间: 2002-08-29 10:33
在weblogic7.0下显示中文路径也是乱码,如何解决呢????
回复 发送短信息

lee3star


发贴数量: 3 个
级别:新手上路
注册时间: 2002年09月
登录次数:2次


Re:weblogic7.0的中文(日文)问题 发表时间: 2002-09-17 15:49
我的数据库是oracle,服务器端使用的字符集是AMERICAN_AMERICA.US7ASCII,我的本地oracle的注册表中NLS_LANG也使用的是这个,所以SQL_PLUS中显示,插入中文都是正确的。但是使用jbuilder自己带的那个database pilot显示表数据时中文都不行。
我使用的是weblogic7,楼上的各位说的办法我都使用了。还是不行。有一点不是很清楚,GB2312和GBK有什么区别吗?我全部使用的是GB2312。好像还是从数据库中读出数据的时候出了问题。
回复 发送短信息

lee3star


发贴数量: 3 个
级别:新手上路
注册时间: 2002年09月
登录次数:2次


Re:weblogic7.0的中文(日文)问题 发表时间: 2002-09-17 16:00
在看weblogic7的jdbc.pdf的时候发现这样一句话:
if your NLS_LANG environment variable is not set, of if it is set to either US7ASCII or WE8ISO8859-1, the driver always operates in 8859-1.
if the NLS_LANG environment variable is set to a different value than the codeset used by the database, the Oracle Thin driver and the WebLogic jDriver for Oracle use the client codeset when writing to the database.
但是现在的情况是我的数据库中使用的字符集是英文的。我用select * from V$NLS_PARAMETERS语句看过的。好像通过jdbc连接的时候没有办法设置这个似的。
回复 发送短信息

worldheart


发贴数量: 96 个
级别:新手上路
注册时间: 2002年08月
登录次数:19次


Re:weblogic7.0的中文(日文)问题 发表时间: 2002-09-26 14:16
studying........
回复 发送短信息