Unicode字符转向问号

时间:2014-01-13 11:24:42

标签: java unicode encoding utf-8 java-7

在我的生产级别应用程序中,我正在处理与中文/日文字符串等unicode字符相关的一些问题。

我的应用程序有一个启动程序和一个配置文件,用于设置运行jvm可以使用的所有参数。此配置文件作为命令行参数的一部分传递。

有问题的用例是,我需要传递配置文件(名称 - 值对格式的内容)。该配置文件的名称中包含unicode字符(即中文)。当我从命令提示符运行应用程序时。我传递完整的配置文件路径,当我复制时文件的名称看起来像“????。conf”。当我在我的代码中收到文件时,它仍然采用“some / path / and / ????。conf”格式。最后,当我通过文件运行此路径时,检查是否失败,即新文件(路径).isFile();

所以我创建了一个小程序来测试这个场景,程序的工作是将文件路径作为命令行参数的一部分,打印它并读取该文件的内容。在运行之前,它看起来类似于上面的“some / path / and / ????。conf”,当它运行并打印位置时,它仍然是相同的,即“some / path /和/ ????”。 CONF”。但是当我调试它时,我能够看到正确的中文字符以及它能够读取文件及其内容。

所以我不确定我的主要应用程序中缺少什么/不同。我检查和试过的东西很少, 1.通过命令chcp 650001将命令提示符的编码类型更改为UTF-8。 2.设置java属性“-Dfile.encoding = UTF-8”。

然而,这也没有帮助。操作系统是windows 7,java版本是1.7.0.45。

关于在哪里查看以及为什么类似的代码与我的小程序一起工作而且与主应用程序无关的任何指针。

====== 一个更正,作为命令提示符的一部分传递给java程序的文件是xml格式。编码类型设置为UTF-8,即通过“”。

因此,在简单文件读取类工作的情况下,同一文件被传递给两个程序,而不是主应用程序。与主应用程序不同的是,除了这个xml文件之外,还传递了其他参数。

谢谢,

维基

1 个答案:

答案 0 :(得分:0)

检查.conf文件的编码类型。应该已经保存了  使用UTF-8编码。