Liferay中文问题及解决办法
来源:互联网 发布:淘宝客服周总结怎么写 编辑:程序博客网 时间:2024/05/17 03:23
最直接的问题就是它的中文翻译,作者看样子似乎不懂汉语,还需要靠翻译软件来帮忙,翻译出的汉语简体加繁体,句子完全按照英文的顺序逐词直译。这个肯定要靠自己逐个修改了,工作量不小。
下面列举一下因为中文问题而出现的程序bug。
liferay版本:4.1.2
1. portlet标题。
如果修改某个portlet的标题为中文,会出现乱码。
原因是liferay将portlet属性信息以xml的格式存入数据库,但在构建xml document时没有指定format编码,导致中文显示成乱码。
解决办法:修改com.liferay.portlet.PortletPreferencesSerializer的toXML()方法,将
ByteArrayOutputStream baos = new ByteArrayOutputStream();
XMLWriter writer = new XMLWriter(baos, OutputFormat.createCompactFormat());
修改为
ByteArrayOutputStream baos = new ByteArrayOutputStream();
OutputFormat format = OutputFormat.createCompactFormat();
format.setEncoding("GBK");
XMLWriter writer = new XMLWriter(baos, format);
2. 内容管理。
内容管理是建立门户最重要的portlet。liferay的网站也是用liferay portal构建的,这个网站是一个很好的如何使用liferay建立门户的例子。研究该网站后发现其中的Journal Content均使用了Structure和Template,这对于构建结构丰富的Journal Content很有帮助。但如果使用Structure和Template建立我们自己的Journal Content,中文又变成乱码了。
原因:这个问题和第一个问题类似,也和xml有关。因为如果使用了Structure和Template,liferay会将文本内容写入Structure和Template的xml,然后一同存进数据库。和第一个问题不同的是前者需要在持久化之前format数据,而在这里我们需要在读取数据时设置编码。
解决办法:修改com.liferay.portlet.journal.util.JournalXslUtil的transform(),这个方法的功能是把xml转换成能够在页面上显示的html。将最后一行
return outputBaos.toString();
修改为
return outputBaos.toString("UTF-8");
此时会报“Unhandled exception type UnsupportedEncodingException”错误,使用try catch处理一下就可以了。
3. RSS
liferay的Message Boards提供了RSS功能,点击Category右边的RSS图标IE会打开xml页,但如果xml中包含中文页面就会报错。原来liferay在生成xml文件时编码设置为“UTF-8”,而xml中如果包含中文,xml文件编码必须设置成“GBK”才能够正常打开。
解决的办法就是把encoding="UTF-8"修改为encoding="GBK",有多个可修改的类,我倾向于在最外层修改,所以修改com.liferay.portlet.messageboards.action.RSSAction的getRSS()方法,将最后一行
return rss.getBytes();
修改为
rss.replaceFirst("UTF-8", "GBK").getBytes();
另外还有一个问题就是平台的相关性,Liferay在Linux下的中文问题要比WinXP下少(其它环境没有测试)。比如中文附件的上传,我在WinXP下无法上传中文文件名的附件,但部署到Linux下就可以。所以建议Liferay要在Linux下运行。
目前就发现这些,有问题了再陆续贴上来。
- Liferay中文问题及解决办法
- Liferay中文问题及解决办法
- liferay环境部署:问题及解决办法
- liferay中文问题
- Java中文乱码问题分析及解决办法
- Android url中文乱码问题及解决办法
- javaweb中文乱码问题及解决办法
- liferay 中文参数乱码问题(二)
- 在JAVA开发中的中文处理问题及解决办法
- SQLITE中文模糊查询的问题及解决办法
- Python下调用json.dumps中文显示问题及解决办法
- C#读取xml文档中文乱码问题及解决办法
- Liferay开发之二 中文问题的解决(中文附件)
- Liferay开发之二 中文问题的解决(中文附件)
- Mantis中文问题的解决办法
- Jetspeed2 问题及解决办法
- CVS问题及解决办法
- 相关问题及解决办法
- stonecai--java中文乱码解决方法
- 测试blog.
- 删病毒“熊猫烧香”setup.exe,spoclsv.exe,ThankYou.exe等等
- 无边框窗口实现拖拉效果
- 什么是中断,为什么要用中断?
- Liferay中文问题及解决办法
- vb.net中的操作符应用实例
- ASP.NET 2.0防止同一用户同时登陆
- MMC病毒查杀方法
- 浅谈多态——概念描述方案
- Meta标签详解
- 最近有点烦
- [转]中国式管理可以休矣
- 一个优秀的超链接鼠标悬停提示CSS+JS