锁定老帖子 主题:webwork字符集问题
精华帖 (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")); |
|
返回顶楼 | |
发表时间:2006-01-10
请教最终如何解决了这个问题? 我也遇到了同样的问题。
|
|
返回顶楼 | |
发表时间: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 |
|
返回顶楼 | |
发表时间: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 (页面显示没有问题,资源配置文件没有问题),剩下的问题就是插入数据在控制端就算出现了??? 这样的乱码! 然后我又参考搂住的设置,结果和搂住的一样。请问搂住是如何解决,数据库中输出汉字正常显示问题?。 |
|
返回顶楼 | |
发表时间: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吧。 |
|
返回顶楼 | |
发表时间: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; 现在郁闷中_________________ |
|
返回顶楼 | |
发表时间:2006-01-11
我的问题最终解决了!!!!! mysql 也是比较垃圾的东西!!
5.0版本改为4.x 就好了! 注意: 表要设定 utf8 字符集. |
|
返回顶楼 | |