简述jive中使用utf-8

02-09-13 shyguy

呵呵,多谢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;
<p>

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

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

@#$%^&*()$%^&*()_

于是,立即打开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 下一页