0

我之前遇到过这个问题,使用 Liferay POrtal,在我导入 lar 文件后,任何阿拉伯字符和任何特殊字符(如“♦”)都被毁为问号“?”,当我检查数据库时,我看到它也是这样存储的,我是说 ”?” .

它在这里解释:Import .lar file issue on Encoding with Glassfish as Application Server

添加-DFile.encoding=UTF8对我没有帮助。

并且在阿拉伯语中使用 Liferay 本身没有问题(例如添加 Web 内容),从数据库中检索数据运行良好。

这些天,我正在从 liferay 5.2.8 升级到 6.1.20,我再次遇到了这个问题,升级涉及的所有阿拉伯字符(作为临时文件提取到临时目录,然后重新插入到 DB)都损坏了..

所以在我看来,这是 Glassfish 文件系统的问题。

我尝试了 Tomcat 7.0 并没有发生此问题,并且我的数据幸存下来,但我需要在 Glassfish 应用程序服务器中解决它。

仅供参考:Glassfish v2.1.1、v3.1.2.2 和 ML 版本存在相同问题。

任何的想法?

4

2 回答 2

1

检查您的数据库使用哪种编码。典型的建议是也使用 UTF-8 作为数据库存储。小心:当您检查数据库中的正确字符时,您的 DB-tools 可能使用与数据库本身不同的编码。很抱歉您遇到的情况,编码问题总是一团糟。

如果您检测到您的数据库使用非 UTF-8 编码,您可能会幸运地在数据库连接字符串中指定该编码(取决于您使用的任何数据库),但您会很幸运。您可能需要修复一些 - 脚本或手动。

于 2013-01-30T08:12:12.353 回答
0

-Dfile.encoding是一个 Oracle JVM 特定设置如何读取 Java 源文件。这对 HTTP 响应的 Content-Type 标头中指定的字符集没有任何影响。

您可以将以下内容添加到文件 glassfish-web.xml(位于 WEB-INF 文件夹中):

<parameter-encoding default-charset="UTF-8"/>

如果您有 .jsp 文件,请在 web.xml 中尝试:

<jsp-config>
    <jsp-property-group>
        <url-pattern>*.jsp</url-pattern>
        <page-encoding>UTF-8</page-encoding>
    </jsp-property-group>
</jsp-config>
于 2013-01-29T14:22:11.433 回答