论坛首页 Java企业应用论坛

webwork字符集问题

浏览 11772 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2005-10-17  
引用
name = new String(catalog.getName().getBytes("ISO-8859-1"), "GBK");

请改为
name = new String(catalog.getName().getBytes("ISO-8859-1"));
0 请登录后投票
   发表时间:2006-01-10  
请教最终如何解决了这个问题?  我也遇到了同样的问题。
0 请登录后投票
   发表时间:2006-01-10  
这个问题我遇到过,主要是把webwork.properties文件放到正确的WEB-INF/classes/目录下,然后对webwork的编码进行设置,我用的是GB2312。



### This can be used to set your locale and encoding scheme
webwork.locale=zh_CN
webwork.i18n.encoding = GB2312
0 请登录后投票
   发表时间:2006-01-10  
stieglitzcc 写道
这个问题我遇到过,主要是把webwork.properties文件放到正确的WEB-INF/classes/目录下,然后对webwork的编码进行设置,我用的是GB2312。



### This can be used to set your locale and encoding scheme
webwork.locale=zh_CN
webwork.i18n.encoding = GB2312


我是mysql 数据库,一开始就使用GB2312 (页面显示没有问题,资源配置文件没有问题),剩下的问题就是插入数据在控制端就算出现了??? 这样的乱码!
然后我又参考搂住的设置,结果和搂住的一样。请问搂住是如何解决,数据库中输出汉字正常显示问题?。
0 请登录后投票
   发表时间:2006-01-11  
wolfsquare 写道
引用
name = new String(catalog.getName().getBytes("ISO-8859-1"), "GBK");

请改为
name = new String(catalog.getName().getBytes("ISO-8859-1"));


nod,我认为这个是正途。
不过似乎应该这样写:
name = new String(catalog.getName();.getBytes();, "ISO-8859-1");

最好还要将显示的页面察看编码改为“西欧字符”,看看乱码的地方是否正常。
因为存入ISO-8859-1是8bit一个字,跑到java里面一个char是16bit,所以乱码掉了,而String是基于char[]的结构。
解决方法是把原先的字符拆为byte[]再用"ISO-8859-1"转一次,将16bit重新拆成两个字。
引用
1、java的char类型是16bit,而不是c/c++中的8bit,所以char和byte之间的转换会造成严重的精度损失。而Java的char是Unicode的。
2、java中String是基于char[]的,也就是说这个String天生就可以表示Unicode。所以如果从byte[]创建一个String就会涉及到一个严重的策略问题,是一个byte转一个String字还是两个byte转一个String字。
3、所以我们常用的java转码中的语句somestr = new String(somestr.getBytes(),"ISO-8859-1")与somestr = new String(somestr.getBytes(),"GB2312")之间是有很大区别的,它们关系到从一个byte变两个byte或反过来。
4、所以,对于单精度的"ISO-8859-1"与双精度的GB2312、GBK、utf-8处理的时候一定要分清,而且它也可以解决很多的问题。而如果你好好了解GB2312与GBK的效果其实很类似,他们只有部分的编码覆盖度上的区别,大部分字符是通用的,可是"ISO-8859-1"却与他们完全不同。
5、还有一个有意思的地方:java.io.Writer与java.io.InputStream下面的东西有个明显的区别,前者接受char[],而后者接受byte[]。其实理解一下,他们之间的转换其实正好需要String的单字节编码与双字节编码的区别,我们可以用它们完成有意思的转换。在它们的沟通过程中我们如果使用buffer,则需要String作为中间者进行转换,算个小trik吧。

    
0 请登录后投票
   发表时间:2006-01-11  
楼上的,我现在用的是MYSQL5.x版本,目前的情况是:

1、页面显示没有问题
2、资源文件转化为ASCII后,页面显示没有问题。


最后问题如下:

提交表单后,在终端中能够显示为“汉字”,可是到了数据库确实"问号"
我的表设置的字符集为GBK:

create table REPORT (REPORT_ID INTEGER NOT NULL AUTO_INCREMENT, NAME VARCHAR(255) not null unique, DESCRIPTION VARCHAR(255) not null, REPORT_FILE VARCHAR(255) not null, PDF_EXPORT BIT, CSV_EXPORT BIT, XLS_EXPORT BIT, HTML_EXPORT BIT, REPORT_QUERY VARCHAR(255), DATASOURCE_ID INTEGER, CHART_ID INTEGER, primary key (REPORT_ID),  unique (NAME))TYPE=MyISAM,DEFAULT CHARACTER SET gbk;




现在郁闷中_________________
0 请登录后投票
   发表时间:2006-01-11  
我的问题最终解决了!!!!!   mysql 也是比较垃圾的东西!!


5.0版本改为4.x 就好了!  


注意:  表要设定 utf8 字符集.
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics