java - 编码 Eclipse 调试器与 JVM
问题描述
我试图将我从中获得的路径保存file.getAbsolutePath()
在文件中。问题是一个文件č
的名称中有一个。Aprintln()
显示为č
,?
但我可以使用字符串创建一个同名的新文件并č
出现。所以我猜JVM使用的编码是不正确的。我已经尝试了几种编码,但č
此时它们都没有。我已经运行了 Eclipse 的调试模式,它显示č
正确。
所以我的问题是:默认调试器变量视图的默认编码是什么?或者有没有办法在不丢失的情况下保存字符串č
?
a = file.getAbsolutePath();
a.compare(new String(file.getAbsolutePath().getBytes()));
这给出0
了其他路径而不是路径č
。
äüö
不是问题。
解决方案
在编码时使用 UTF 字符集,StandardCharsets.UTF_8
在解码时使用相同的字符集,以避免丢失字符。
例如,
a = file.getAbsolutePath();
a.compare(new String(file.getAbsolutePath().getBytes(StandardCharsets.UTF_8), StandardCharsets.UTF_8));
将给出0
所有路径(有和没有č
)。如果使用非 UTF 编码,则OngetBytes()
和字符可能会丢失。println()
在 Java 中,字符串实例本身没有编码,因为它是由 Unicode 字符组成的。
推荐阅读
- ansible - Ansible ec2_eni 模块。如何为 ec2_eni 接口添加额外的 security_groups?
- python - 向子进程发送多个命令,速度问题
- android - 如何在 sqlite android 中使用这个选择
- go - 将具有 uint8_t *num 的 C 结构转换为 Go
- python - SQLAlchemy GUID 自定义类型或 SQLAlchemy-Utils UUID 类型
- android - 尝试使用 repo-sync 同步沿袭 OS 存储库,获取错误,尝试强制同步
- c - 如果输入“q”,则在 C 中创建一个退出的函数
- java - 使用 AWS 签名的 RestAssured 身份验证
- javascript - 过渡密码散列算法
- azure - 使用其 Rest API 时,Microsoft Azure 媒体服务通道 ID 应如何格式化?