曹 曹晓钢 Unregistered / Unconfirmed GUEST, unregistred user! 2002-05-21 #21 不管你用的是哪一家的jdbc driver,安装完了都要看他自己带的文档啊! 推荐你用jSQL connect,就是我上面给你的那个。
曹 曹晓钢 Unregistered / Unconfirmed GUEST, unregistred user! 2002-05-21 #22 如果你对JDBC URL还不了解的话,请先阅读并理解JDBC教程: http://java.sun.com/docs/books/tutorial/jdbc/index.html 至于使用除jdbc-obdc桥之外的jdbc driver的url规则,你要看所用的driver的文档。 因为这个url的规则是driver的实现者自己规定的。
如果你对JDBC URL还不了解的话,请先阅读并理解JDBC教程: http://java.sun.com/docs/books/tutorial/jdbc/index.html 至于使用除jdbc-obdc桥之外的jdbc driver的url规则,你要看所用的driver的文档。 因为这个url的规则是driver的实现者自己规定的。
Y Yakuu Unregistered / Unconfirmed GUEST, unregistred user! 2002-05-22 #23 我认为不光是jdbc的问题。因该说这里包含了web browser,web server, jdbc和数据库的编码问题。 中文问题已经快说烂了。 其实我认为我们编码尽量不要使用getBytes,这样会导致混乱。 具体分析一下,从web browser入手,不编码的话,ie会将form表单的输入以ISO-8859-1进行编码,然后根据web server进行第二次编码,(比如resin默认编码就是iso-8859-1),这样还是ISO-8859-1,然后存入数据库时,默认的编码是和操作系统相同的,简体中文就是GB2312。 这样,如果不作任何设置,存入到数据库中的就是系统编码。 从数据库中取出来的时候,web server会将其转为(以resin为例)ISO-8859-1,所以如果你只需要在jsp的html中设置: <meta http-equiv="content-type" content="text/html;charset=GB2312">就可以搞定。 关键在于了解每一步(web browser -> web server -> jdbc和数据库)的字符都转成什么编码。
我认为不光是jdbc的问题。因该说这里包含了web browser,web server, jdbc和数据库的编码问题。 中文问题已经快说烂了。 其实我认为我们编码尽量不要使用getBytes,这样会导致混乱。 具体分析一下,从web browser入手,不编码的话,ie会将form表单的输入以ISO-8859-1进行编码,然后根据web server进行第二次编码,(比如resin默认编码就是iso-8859-1),这样还是ISO-8859-1,然后存入数据库时,默认的编码是和操作系统相同的,简体中文就是GB2312。 这样,如果不作任何设置,存入到数据库中的就是系统编码。 从数据库中取出来的时候,web server会将其转为(以resin为例)ISO-8859-1,所以如果你只需要在jsp的html中设置: <meta http-equiv="content-type" content="text/html;charset=GB2312">就可以搞定。 关键在于了解每一步(web browser -> web server -> jdbc和数据库)的字符都转成什么编码。
J jinsfu Unregistered / Unconfirmed GUEST, unregistred user! 2002-05-22 #24 to 曹晓钢: 你给我的东西我下载了。然后根据文档进行了配置,将JSQLConnect.jar 拷贝到了 C:/jbuilder6/jakarta-tomcat-4.0.1/common/lib,然后重新运行了tomcat的 startup, 但是,我的页面给出的出错信息是, 没有合适的驱动程序! 我哪里出错了?应该怎么配置? (呵呵,我发现我已经改变了问题的初衷)
to 曹晓钢: 你给我的东西我下载了。然后根据文档进行了配置,将JSQLConnect.jar 拷贝到了 C:/jbuilder6/jakarta-tomcat-4.0.1/common/lib,然后重新运行了tomcat的 startup, 但是,我的页面给出的出错信息是, 没有合适的驱动程序! 我哪里出错了?应该怎么配置? (呵呵,我发现我已经改变了问题的初衷)
曹 曹晓钢 Unregistered / Unconfirmed GUEST, unregistred user! 2002-05-22 #25 Yukuu的总结很全面,谢谢。 我补充一点:做多语言(不光是中文),最好是在英文平台上做,这样便于检查数据流转的每一步是否正确。 而且,如果系统要容纳多种不同的语言,用英文平台也更加合适。 to jinsfu:我不能确定是否放在tomcat的common/lib下面是正确的,请先试一下放在你的web-inf的 lib下面?
Yukuu的总结很全面,谢谢。 我补充一点:做多语言(不光是中文),最好是在英文平台上做,这样便于检查数据流转的每一步是否正确。 而且,如果系统要容纳多种不同的语言,用英文平台也更加合适。 to jinsfu:我不能确定是否放在tomcat的common/lib下面是正确的,请先试一下放在你的web-inf的 lib下面?
Y Yakuu Unregistered / Unconfirmed GUEST, unregistred user! 2002-05-22 #27 在我看来,一劳永逸的方法就是转换成为unicode编码。 目前我做完的一个forum项目就是将所有的字符转化为unicode,这样我轻松很多了。 []
曹 曹晓钢 Unregistered / Unconfirmed GUEST, unregistred user! 2002-05-22 #28 to Yukuu: 能不能给我们介绍一下?我对这个部分了解不多。 如果你用unicode的,叶面上还是GB2312吗?应该也换成UTF了吧?那么java收到 的就已经是utf了,database里面也是UTF,我的理解对不对?
to Yukuu: 能不能给我们介绍一下?我对这个部分了解不多。 如果你用unicode的,叶面上还是GB2312吗?应该也换成UTF了吧?那么java收到 的就已经是utf了,database里面也是UTF,我的理解对不对?
Y Yakuu Unregistered / Unconfirmed GUEST, unregistred user! 2002-05-22 #29 其实说起来就是那一张纸。捅破了就简单了。 先介绍一下我的环境: IE6.0 , Resin2.1.1 , Oracle8.1.7和class12.jar 我只要设定 <%@ page contentType="text/html; charset=iso-8859-1" %> 这样jsp在提交表单的时候,以iso-8859-1编码,java自动将字符流转化为unicode, 因为java就是以unicode编码的。我们可以观察到,在servlet得到的字符都转为如 婥 之类的符号,这就是utf-16的十进制码。得到这个编码后,我们以后的工作就 只是读出来了。 婥 在ie中显示正确,打开源代码,还是 婥 这就是说,unicode就是唯一 编码,不管客户端浏览器设置什么编码,都可以正常显示。 谢谢。
其实说起来就是那一张纸。捅破了就简单了。 先介绍一下我的环境: IE6.0 , Resin2.1.1 , Oracle8.1.7和class12.jar 我只要设定 <%@ page contentType="text/html; charset=iso-8859-1" %> 这样jsp在提交表单的时候,以iso-8859-1编码,java自动将字符流转化为unicode, 因为java就是以unicode编码的。我们可以观察到,在servlet得到的字符都转为如 婥 之类的符号,这就是utf-16的十进制码。得到这个编码后,我们以后的工作就 只是读出来了。 婥 在ie中显示正确,打开源代码,还是 婥 这就是说,unicode就是唯一 编码,不管客户端浏览器设置什么编码,都可以正常显示。 谢谢。
Y Yakuu Unregistered / Unconfirmed GUEST, unregistred user! 2002-05-22 #30 呵呵,你看看,我输出的unicode 都变中文了。 分开吧: &# 23412 ; 上面的说明: unicode都是以&#开头,;号结尾。中间就是每个字符的编码,可以是十进制, 也可以是十六进制: 十进制 &# 23412 ; 十六进制 &#x5ed2 ; []
呵呵,你看看,我输出的unicode 都变中文了。 分开吧: &# 23412 ; 上面的说明: unicode都是以&#开头,;号结尾。中间就是每个字符的编码,可以是十进制, 也可以是十六进制: 十进制 &# 23412 ; 十六进制 &#x5ed2 ; []
曹 曹晓钢 Unregistered / Unconfirmed GUEST, unregistred user! 2002-05-22 #31 多谢yukuu的指导。 那么,IE接收到的是'&','#','2','3','4','1','2',';' 8个字节,还是unicode 内码4个字节? utf-16和utf-7/8的区别又是什么呢?
多谢yukuu的指导。 那么,IE接收到的是'&','#','2','3','4','1','2',';' 8个字节,还是unicode 内码4个字节? utf-16和utf-7/8的区别又是什么呢?
Y Yakuu Unregistered / Unconfirmed GUEST, unregistred user! 2002-05-22 #32 不一定是8个子节。但一定是以&#开头,;结束。 unicode的问题,建议到 http://www.unicode.org/去看看。 我也是学习中。还请多多指教。
曹 曹晓钢 Unregistered / Unconfirmed GUEST, unregistred user! 2002-05-22 #33 那岂不是说,如果view source,看到的都是&#什么的...看不到直接的中文了?
Y Yakuu Unregistered / Unconfirmed GUEST, unregistred user! 2002-05-22 #34 哈哈,对了,你试了吧。我就觉得这点不爽,所以现在还是暂时用的GBK编码
Y Yakuu Unregistered / Unconfirmed GUEST, unregistred user! 2002-05-22 #35 其实是我懒,而且要用getBytes转换,不爽。 不过用new String(String.getBytes("UTF-16"),"GBK"); 应该可以搞定的。或者,写个将unicode转GBK的方法。
其实是我懒,而且要用getBytes转换,不爽。 不过用new String(String.getBytes("UTF-16"),"GBK"); 应该可以搞定的。或者,写个将unicode转GBK的方法。
曹 曹晓钢 Unregistered / Unconfirmed GUEST, unregistred user! 2002-05-22 #36 不,我没试,我想的应该是这样。 有个问题,用户输入的时候应该是GB2312还是UTF?java接收到的是什么格式的?unicode内码 还是已经是&#的形式了?我不知道从用户输入的汉字内码到&#形式的格式之间的转换是哪一步做的? db server里面存放的,是unicode内码还是什么? 用这个办法还有一个问题,就是不好计算字数了。
不,我没试,我想的应该是这样。 有个问题,用户输入的时候应该是GB2312还是UTF?java接收到的是什么格式的?unicode内码 还是已经是&#的形式了?我不知道从用户输入的汉字内码到&#形式的格式之间的转换是哪一步做的? db server里面存放的,是unicode内码还是什么? 用这个办法还有一个问题,就是不好计算字数了。
曹 曹晓钢 Unregistered / Unconfirmed GUEST, unregistred user! 2002-05-22 #37 我不喜欢getBytes的原因还有一个是效率低,你看,做两次getBytes,会消耗不少时间和资源。
Y Yakuu Unregistered / Unconfirmed GUEST, unregistred user! 2002-05-22 #38 不要管用户输入的是什么编码,默认的ie会将其编译成iso-8859-1,而unicode这一步是在 jre编译的,也就是说,ie传iso-8859-1,jre将其转为UTF; db里面存放的就是unicode; 计算数字?数据格式分开吧。像google就是用unicode存数据的。所以它在检索的时候, 会出现先检索到日文,再是中文的。
不要管用户输入的是什么编码,默认的ie会将其编译成iso-8859-1,而unicode这一步是在 jre编译的,也就是说,ie传iso-8859-1,jre将其转为UTF; db里面存放的就是unicode; 计算数字?数据格式分开吧。像google就是用unicode存数据的。所以它在检索的时候, 会出现先检索到日文,再是中文的。
曹 曹晓钢 Unregistered / Unconfirmed GUEST, unregistred user! 2002-05-22 #39 我说的是,比如你做forum,一定会用到统计字数吧?就是(本文600字)...这样的。 因为&#后面的长度可能不一样长,好像不能精确统计了.
曹 曹晓钢 Unregistered / Unconfirmed GUEST, unregistred user! 2002-05-22 #40 db里面存放的就是unicode; 点击展开... 是内码还是&#的字符串? 如果是内码的话,用jdbc再次读出来的时候,jdbc会把它变成&#的形式? 我关心的就是从unicode内码到&#形式的字符串的转换发生在什么时候。
db里面存放的就是unicode; 点击展开... 是内码还是&#的字符串? 如果是内码的话,用jdbc再次读出来的时候,jdbc会把它变成&#的形式? 我关心的就是从unicode内码到&#形式的字符串的转换发生在什么时候。