在我的应用程序中使用glassfish时,UTF-8字符(特别是阿拉伯语)会损坏

在我的应用程序中使用glassfish时,UTF-8字符(特别是阿拉伯语)会损坏,utf-8,glassfish,liferay,Utf 8,Glassfish,Liferay,在导入lar文件、任何阿拉伯字符和任何特殊字符(如“lar”)后,我使用Liferay POrtal之前就遇到了这个问题♦" 当我检查数据库时,我看到它也是这样存储的,我的意思是“?” 其解释如下: 添加-DFile.encoding=UTF8对我没有帮助 而且将Liferay本身与阿拉伯语结合使用也没有问题(比如添加web内容),从DB中检索数据效果良好 这些天来,我正在从liferay 5.2.8升级到6.1.20,我再次面临这个问题,所有与升级有关的阿拉伯文字符(作为临时文件提取到临时目录

在导入lar文件、任何阿拉伯字符和任何特殊字符(如“lar”)后,我使用Liferay POrtal之前就遇到了这个问题♦" 当我检查数据库时,我看到它也是这样存储的,我的意思是“?”

其解释如下:

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

而且将Liferay本身与阿拉伯语结合使用也没有问题(比如添加web内容),从DB中检索数据效果良好

这些天来,我正在从liferay 5.2.8升级到6.1.20,我再次面临这个问题,所有与升级有关的阿拉伯文字符(作为临时文件提取到临时目录,然后重新插入数据库)都已损坏

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

我尝试了Tomcat7.0,但这个问题没有发生,我的数据保存了下来,但我需要在Glassfish应用服务器中解决它

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


有什么想法吗?

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

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


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

<jsp-config>
    <jsp-property-group>
        <url-pattern>*.jsp</url-pattern>
        <page-encoding>UTF-8</page-encoding>
    </jsp-property-group>
</jsp-config>

*.jsp
UTF-8

检查您的数据库使用何种编码。典型的建议是将UTF-8也用于数据库存储。注意:当您检查数据库中的字符是否正确时,您的DB工具可能会使用与数据库本身不同的编码。对于您所处的情况,很抱歉,编码问题总是一团糟


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

感谢重播,我正在尝试你的atm解决方案。我想说这对我没有帮助,仍然有问题。谢谢,但我不认为它的DB问题,正如我说的一样(这里是liferay)在tomcat和glassfish中执行相同的批处理,在tomcat中没有问题,在glassfish中有问题,使用相同的DB驱动程序!和DB!以及正确存储的阿拉伯字符。还有相同的连接字符串?即关于编码?出于某种原因,我记得glassfish有两个DB属性,“URL”和“URL”“或者类似的——我不知道哪一个优先。
<jsp-config>
    <jsp-property-group>
        <url-pattern>*.jsp</url-pattern>
        <page-encoding>UTF-8</page-encoding>
    </jsp-property-group>
</jsp-config>