编码Eclipse调试器与JVM

时间:2019-02-26 21:38:04

标签: java eclipse encoding character-encoding

我试图将从$this->paramsFile = codecept_absolute_path($paramStorage); 获得的路径保存在文件中。问题是一个文件的名称中有一个file.getAbsolutePath()čprintln()显示为č,但是我可以使用String创建一个具有相同名称的新文件,然后出现?。因此,我猜想JVM使用的编码不正确。我已经尝试了几种编码,但是到目前为止,它们都没有得到č的编码。我正在运行Eclipse的调试模式,它正确显示了č

所以我的问题是:默认调试器变量视图的默认编码是哪种?还是有一种保存字符串而不丢失č的方法?

č

这为a = file.getAbsolutePath(); a.compare(new String(file.getAbsolutePath().getBytes())); 提供了其他路径,而不是路径0č没问题。

1 个答案:

答案 0 :(得分:0)

在编码时使用StandardCharsets.UTF_8之类的UTF字符集,在解码时使用相同的字符集,以避免丢失字符。

例如,

a = file.getAbsolutePath();
a.compare(new String(file.getAbsolutePath().getBytes(StandardCharsets.UTF_8), StandardCharsets.UTF_8));

将为所有路径给出0(有和没有č)。如果使用非UTF编码,则在getBytes()println()上的字符可能会丢失。在Java中,字符串实例本身没有编码,因为它由Unicode字符组成。