勤&快

问题其实就是你期望的东西和你体验的东西之间的差别
随笔 - 55, 文章 - 0, 评论 - 68, 引用 - 0
数据加载中……

[修改版]在XWiki中怎么正常显示中文字符

适用版本XWiki 1.0 beta5或者更高版本。在将来的版本中,也许可以更方便的实现这个配置。英文版配置说明参考这里,说的很详细。http://platform.xwiki.org/xwiki/bin/view/AdminGuide/Encoding

XWiki 的默认编码是ISO-8859-1。虽然可以正常显示中文,但是在XWiki Text Edit中,中文被显示为数字编码。要将默认编码修改为UTF-8,才能正常显示中文。但是,有的时候修改不当,在进行roll-back操作的时候,中 文显示为问号,形如'??????'。

修改XWiki配置文件编码

在XWiki的根目录下的WEB-INF文件夹里,修改如下文件中和编码相关的内容。

  • web.xml: encoding = UTF-8
  • xwiki.cfg: xwiki.encoding = UTF-8

修改数据库编码

  • 如果使用的是XWiki自带的数据库hsqldb,则不需要修改。
  • 如果使用的是MySQL数据库,找到其配置文件(my.ini如果是windows,在linux下是/etc/mysql/my.cnf),修改在相应的地方添加如下配置项:
    [client]
    default-character-set=utf8
    [mysqld]
    default-character-set=utf8
    character
    -set-server = utf8
    collation
    -server = utf8_general_ci
  • 如果是其他数据库,只需要修改其配置文件,使其数据库编码和JDBC链接编码都为UTF-8即可。详细可参见相应数据库帮助文档。

修改Java应用服务器编码

  • (这一步可选,似乎不修改也没有关系,修改了之后控制开反而会出现乱码)如果使用Jetty或者早起版本的Tomcat作为服务器,需要修改启动的脚本文件。在windows下都是.bat或者.sh文件。
    如果是Tomcat,则修改根目录下bin文件夹下面配置文件(windows下是start.bat,linux下是catalina.sh),如下:
export JAVA_HOME="/usr/lib/jvm/java-1.5.0-sun"

# Set juli LogManager 
if it is present
if [ -"$CATALINA_HOME"/bin/tomcat-juli.jar ]; then
  JAVA_OPTS
="$JAVA_OPTS "-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager" "-Djava.util.logging.config.file="$CATALINA_BASE/conf/logging.properties " -Dfile.encoding=UTF-8
fi

在XWiki自带的Jetty的start_xwiki.bat,修改如下:
echo off
set LANG
=en_US.UTF-8
set JETTY_PORT
=8080
set JETTY_HOME
=.
java 
%JAVA_OPTS% -Dfile.encoding=UTF-8 -Djetty.port=%JETTY_PORT% -Djetty.home=%JETTY_HOME% -jar %JETTY_HOME%/start.jar
  • 如果使用的新版的Tomcat,在bin下面没有.bat文件,只有tomcat5.exe文件。那么在运行tomcat5.exe只有,在系统托盘的图标上单击右键,选择Configure。选择Java标签,在java option中添加'-Dfile.encoding=UTF-8'。如下图所示:
  • 如果是其他的应用服务器,只要修改相应的配置文件即可。可以查阅相应帮助文档。
  • 这一步是必须的)有时候会有中文url不能正常访问的问题,那就需要修改$TOMCAT_HOME/conf/server.xml文件,在每一个Connector标签中加入属性"URIEncoding="UTF-8"。修改后的代码形如:
    <Connector port="8080" axHttpHeaderSize="8192maxThreads="150" minSpareThreads="25" maxSpareThreads="75"       enableLookups="false" redirectPort="8443" acceptCount="100"              connectionTimeout="20000" disableUploadTimeout="true"
                    URIEncoding
    ="UTF-8"/>

hibernate配置文件编码(可选)

在XWiki的根目录下WEB-INF文件夹下的hibernate.cfg.xml文件中如下代码:
<property name="connection.url">jdbc:mysql://localhost:3306/xwiki?useUnicode=true&characterEncoding=utf8&useServerPrepStmts=false</property>

感谢

在XWiki的邮件列表得到了大家很多非常有用的建议。非常感谢各位的帮助。总结一下,希望对大家有帮助。

posted on 2007-03-23 22:15 daning 阅读(5918) 评论(10)  编辑  收藏

评论

# re: 在XWiki中怎么正常显示中文字符  回复  更多评论   

多谢分享! 正在学习用 XWiki...
2007-03-26 09:49 | BeanSoft

# re: [修改版]在XWiki中怎么正常显示中文字符  回复  更多评论   

我用的是tomcat 6.0.16 ,修改后控制台里面的中文信息输出却是乱码。
而且所有都按照步骤修改后,依然存在乱码情况。
我查看了数据库里的表:xwikistrings,里面存储的是乱码,但是如果我在这个表里面输入中文,则能正常调出并在页面显示。
2008-03-19 10:45 | checkit

# re: [修改版]在XWiki中怎么正常显示中文字符  回复  更多评论   

我也试了5.5.26,情况和6的一样。
2008-03-19 10:51 | checkit

# re: [修改版]在XWiki中怎么正常显示中文字符  回复  更多评论   

請問一下,XWIKI可以連MS-SQL嗎?我下載了Enterprise的war檔,重啟tomcat後,找不到首頁耶?
2008-06-04 15:28 | karen

# re: [修改版]在XWiki中怎么正常显示中文字符  回复  更多评论   

安装的数据库是Mysql server 5.0, 在安装xwiki中出现下面这个问题, 请问怎么解决?

javax.servlet.ServletException: Error number 3 in 0: Could not initialize main XWiki context
Wrapped Exception: Error number 3201 in 3: Exception while saving document XWiki.XWikiPreferences
Wrapped Exception: Could not execute JDBC batch update
org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:535)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:433)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
2008-08-16 08:37 | gareth

# re: [修改版]在XWiki中怎么正常显示中文字符  回复  更多评论   

@gareth
我没有遇到过这种问题。你的mysql jdbc是不是最新的?你换个最新的mysql jdbc库试试。
2008-08-16 10:59 | daning

# re: [修改版]在XWiki中怎么正常显示中文字符  回复  更多评论   

恩。 我用得mysql版本太低。 我想是版本问题。 换了就没问题啦。非常谢谢。

你好,请教一个问题。 我根据你的方法修改了配置, 在xwiki中添加有中文内容的页面时,中文显示没问题,可是当我重启tomcat后,再打开原来的页面,显示都是乱码了。请问怎么解决?
2008-08-19 06:51 | gareth

# re: [修改版]在XWiki中怎么正常显示中文字符  回复  更多评论   

@gareth
不知道,没有遇到过。是不是你的浏览器不能自动检测编码,你试试手动在浏览器中修改一下查看页面编码,改为utf-8.
2008-08-19 10:08 | daning

# re: [修改版]在XWiki中怎么正常显示中文字符  回复  更多评论   

@daning
如果是浏览器的问题的话, 没重启tomcat,查看文档没乱码问题。问题出现在重启tomcat后,查看文档才出现乱码。我的页面编码格式utf-8. 数据库中也是utf-8.我就是按照你文档上说的弄得的。set LANG=en_US.UTF-8
这个是加在catalina.bat里面吗?
2008-08-19 13:14 | gareth

# re: [修改版]在XWiki中怎么正常显示中文字符[未登录]  回复  更多评论   

不好意思,这个我就不知道了。
不过set LANG=en_US.UTF-8 这个可以不设置。
2008-08-19 13:23 | daning

只有注册用户登录后才能发表评论。


网站导航: