好我确实用JVM 1.5重现了你的错误。
查看1.5的源代码未设置缓存的默认字符集。我不知道这是不是一个bug但1.6改变了这个实现并使用了缓存的字符集:
当您将文件编码设置file.encoding=Latin-1
为下佽调用时Charset.defaultCharset()
,会发生什么因为未设置缓存的默认字符集,它将尝试为该名称查找相应的字符集Latin-1
找不到此名称,因为它不正确并返回默認值UTF-8
。
但我同意这些意见你不应该依赖这个属性。这是一个实现细节