我试图将从$this->paramsFile = codecept_absolute_path($paramStorage);
获得的路径保存在文件中。问题是一个文件的名称中有一个file.getAbsolutePath()
。 č
将println()
显示为č
,但是我可以使用String创建一个具有相同名称的新文件,然后出现?
。因此,我猜想JVM使用的编码不正确。我已经尝试了几种编码,但是到目前为止,它们都没有得到č
的编码。我正在运行Eclipse的调试模式,它正确显示了č
。
所以我的问题是:默认调试器变量视图的默认编码是哪种?还是有一种保存字符串而不丢失č
的方法?
č
这为a = file.getAbsolutePath();
a.compare(new String(file.getAbsolutePath().getBytes()));
提供了其他路径,而不是路径0
。
č
没问题。
答案 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字符组成。