简述jive中使用utf-8

shyguy 02-09-13

呵呵,多谢banq兄抬举。无奈这几天着实太忙,天天加班到11点,连续1个多月了。而这几天系统试运行,每天排除问题,分析日志,头大ing.

说起jive支持utf,我早有想法。可是以前尝试了几次,都失败了。前天,我自己的系统中数据库连接查询发生了点问题,于是随手看了看jive2.6 的ConnectionManager的source,发现了这么一段话:

/**
* MySQL doesn't currently support Unicode. However, a workaround is
* implemented in the mm.mysql JDBC driver. Setting the Jive property
* database.mysql.useUnicode to true will turn this feature on.
*/

private boolean mysqlUseUnicode;

嘿嘿,继续往下看.....找到了这么一段代码

mysqlUseUnicode = Boolean.valueOf(
JiveGlobals.getJiveProperty("database.mysql.useUnicode")).booleanValue();

@#$%^&*()$%^&*()_
于是,立即打开jive_config.xml,找到database section,加入
<mysql>
<useUnicode>true</useUnicode>
</mysql>
重新启动resin,居然一切OK了。

接下来就是超级麻烦的data import/export了。
因为mysql里边储存的东东都是native encoding的,对我来说,就要把
mysql里边的记录的内容从gb2312==>utf-8了。

对于jive的要求,你只要:采用resource boundle,encoding 采用utf-8,
别用<%@ page contentType....%>了。Servlet2.3可以用filter了,jive2.5就用了这个。

tomcat 对于<%@ page contentType....%>是有问题的,除非都用8859_1,至于什么问题,偶吃完饭回来再说。

shyguy
2002-09-13 12:03

banq,你的jive filter有问题。估计调整一下apply order能够解决。

banq
2002-09-13 15:19

这顿饭吃什么了,吃这么长时间?
下文

我调了 filter order,没用。

shyguy
2002-09-13 15:52

哦,偶吃完饭,出去买DC去了。

嘿嘿嘿,先看看偶的家伙
外包装

拍偶喝水的器皿

以后,西湖边的美女都跑不了了。哈哈哈

好了,言归正传。

我们大家都知道
<%@page contentType="text/html;charSet=gb2312" %>

有的时候,我们难免会在一个jsp中include另外一个jsp,例如,jive中的skin就include了header.jsp/footer.jsp
那么,问题就来了。
你说在哪个地方设置contentType呢?
嘿嘿
两个地方都设置?显然不行,app server会抱错。
你会回答,一般都设置global.jsp中,right?
Great!
可是!
Tomcat中,你在global.jsp中设置了ContentType,并不会影响到外边的index.jsp/thread.jsp/forum.jsp等等页面的encoding.

还有,Tomcat中,request.getParameter()获取IE post/get两种方式过来的参数,encoding的apply方式是不一样的。也就是说
request.getPramter()去取form post的数据,也许是正常的,但是,如果参数是跟在url后边,诸如xxx.jsp?a=%c4%e3这样的,request.getParameter获得的也许就是8859_1encoding的Char/String了!

上面的情况是我很早以前经过测试得出的结论,对于tomcat 4.0.3/4.0.4/4.1.x等都这样。我没有去跟踪Tomcat-Core的实现。
所以我选择了resin。

cc
2002-09-13 16:03

我倒,原来是留下了个问题!!

3Go 1 2 3 下一页