我有一个Java应用程序部署在Ubuntu Server Edition PC上的Glassfish web服务器上。
该应用程序必须提供的服务之一是在特定文件夹中挂载ISO镜像,并将此文件夹的所有内容复制到另一个目标位置。
由于我的Java方法发现了一个西里尔语文件名,所以它崩溃了。在服务器应用程序日志中,该文件名显示为“???????????????.txt”。
起初我认为这是一个Linux问题,因为此文件在终端中也显示不正确。在我添加CP1251区域设置后,Linux终端中的问题得到解决,但我的应用程序仍在抛出错误。
Ubuntu论坛上的一个人建议我使用“convmv”实用程序转换此糟糕的文件,但此实用程序的输出表明此文件已经是UTF-8。
之后,我创建了一个带有相同方法的测试应用程序,并在同一台PC上运行它,但只是像“java Test $arguments$”那样。
它确实有效!
简单的System.out.println方法正确显示了文件名,并成功将问题文件复制到另一个文件夹中。
这个事实让我别无选择,只能责怪Glassfish成为我课程、Java和Linux之间的鸿沟(尽管我不确定这是如何可能的)。
是否有任何字符编码特定设置在Glassfish中可以纠正此错误,或者我错过了什么,问题并不在那里?
提前致谢!
安德鲁
该应用程序必须提供的服务之一是在特定文件夹中挂载ISO镜像,并将此文件夹的所有内容复制到另一个目标位置。
由于我的Java方法发现了一个西里尔语文件名,所以它崩溃了。在服务器应用程序日志中,该文件名显示为“???????????????.txt”。
起初我认为这是一个Linux问题,因为此文件在终端中也显示不正确。在我添加CP1251区域设置后,Linux终端中的问题得到解决,但我的应用程序仍在抛出错误。
Ubuntu论坛上的一个人建议我使用“convmv”实用程序转换此糟糕的文件,但此实用程序的输出表明此文件已经是UTF-8。
之后,我创建了一个带有相同方法的测试应用程序,并在同一台PC上运行它,但只是像“java Test $arguments$”那样。
它确实有效!
简单的System.out.println方法正确显示了文件名,并成功将问题文件复制到另一个文件夹中。
这个事实让我别无选择,只能责怪Glassfish成为我课程、Java和Linux之间的鸿沟(尽管我不确定这是如何可能的)。
是否有任何字符编码特定设置在Glassfish中可以纠正此错误,或者我错过了什么,问题并不在那里?
提前致谢!
安德鲁