当前位置: 首页 > 面试题库 >

OS X中Java 7文件名的编码问题

魏波娃
2023-03-14
问题内容

我有以下代码:

public static void main( String[] args ) {
    System.out.println(Locale.getDefault());
    File f = new File("/Users/johngoering/Documents");
    File[] fs = f.listFiles();
    for (File ff : fs) {
        System.out.println(ff.getName());
        System.out.println(ff.exists());
    }
}

在我的Documents文件夹中,有一个名为“öß.pdf”的文件。这是Java 6下的输出:

 en_US
 (...)
 öß.pdf
 true
 (...)

但是这是Java 7下的输出:

 en_US
 (...)
 o����.pdf
 false
 (...)

请特别注意,file.exists返回falselistFiles!!
返回的文件。是什么赋予了?有没有什么办法解决这一问题?这似乎很像Java 7错误…


问题答案:

在Oracle的帮助下,我们发现了一种解决方法LC_CTYPEUTF-8在Eclipse中(以及从JNLP或其他任何地方启动时)将环境变量设置为。这解释了代码在终端上起作用的原因,因为默认情况下OS
X终端会“设置区域设置环境变量”(一个可以关闭的选项,即使在终端中,也会遇到与上面相同的问题)。

在启动器中设置此环境变量可以解决该问题。

我仍然认为这是Java 7的错误,因为即使没有此变量,Java 6仍然可以工作。



 类似资料:
  • 我在PHP中有一个CSV字符串,它被mb_detect_编码检测为UTF8。此字符串将写入文件。当我在文本编辑器(程序员记事本)中打开它时,编辑器会说它是UTF8无标记的,当我将编码更改为ANSI时,它会在Excel中正确打开。我想用ANSI编写这个文件,这样在Excel中打开它之前就不必在文本编辑器中进行转换。尝试使用以下命令: utf8_解码($xhtml) iconv(“UTF-8”、“Wi

  • 问题内容: 我有一个定义的编码(utf8)的输入文件,从中我创建了不同的文件,这些文件的名称和内容(再次是utf8)取自该输入文件。 我的问题是一个特定的Windows系统创建的文件没有正确的字符。这些文件的内容可读性很强,但名称却不可读。而是使用文件名。 在其他Windows系统上,一切正常。 可以在的第二个参数中设置文件内容的编码,但是似乎无法设置文件名的编码。 谢谢。 问题答案: 看到两个字

  • 建议选择 safe 方式命名文件名。 经测试,以下修改源码以适应 utf-8 命名方式兼容性也不好。 // 修改\inc\pageutils.php中utf8_encodeFN、utf8_decodeFN两个函数   function utf8_encodeFN($file,$safe=true){ global $conf; //if($conf['fnencode'] == '

  • 我的pom文件列表 但是,在时,我得到 当我运行时,我看到实际上我使用的是Java6 它可以在哪里定义?我有源(d)my.zshrc多次。

  • 问题 你想使用原始文件名执行文件的I/O操作,也就是说文件名并没有经过系统默认编码去解码或编码过。 解决方案 默认情况下,所有的文件名都会根据 sys.getfilesystemencoding() 返回的文本编码来编码或解码。比如: >>> sys.getfilesystemencoding() 'utf-8' >>> 如果因为某种原因你想忽略这种编码,可以使用一个原始字节字符串来指定一个文件名

  • 本文向大家介绍简单解决Python文件中文编码问题,包括了简单解决Python文件中文编码问题的使用技巧和注意事项,需要的朋友参考一下 读写中文 需要读取utf-8编码的中文文件,先利用sublime text软件将它改成无DOM的编码,然后用以下代码: 这样就可以正确地读出文件里面的中文字符了。 同样的,如果要在创建的文件中写入中文,最好也和上面差不多: 创建中文文件 然后以读出的字符为文件名,