1

我有俄语 Windows 7,其中一些设备以俄语命名。如果我通过我获得了混音器之类的设备,AudioSystem.getMixerInfo()我已经Mixer.Info.getName()错误地解码为 un​​icode。

是否可以控制转换或者这是 Java 设计错误?

更新

实际上,Java 从 CP1252 解码为 un​​icode,而我的默认语言环境是 CP1251。用CP1251怎么说?

4

2 回答 2

2

只需查看以下链接:
https ://bugs.openjdk.java.net/browse/JDK-8177951
http://mail.openjdk.java.net/pipermail/sound-dev/2017-June/000564.html

所以我正在努力修复这个错误,但似乎 Oracle 中没有人回应我。我把补丁发给了bug的受理人(由我发布,由受理人管理),但他没有回复我,可能是几天后。希望这个补丁将包含在第一个 JDK9 版本中......

于 2017-06-26T05:38:20.660 回答
1

我有同样的问题(在俄罗斯 Windows 7 中)。我认为获取俄语设备名称的唯一方法是将其转换为正确的字符集:

    for (Mixer.Info info : AudioSystem.getMixerInfo()) {
        System.out.println(new String(info.getName().getBytes("Windows-1252"), "Windows-1251"));
    }
于 2012-05-14T17:27:48.257 回答