我有一些俄语Windows 7和一些用俄语命名的设备。如果我通过AudioSystem.getMixerInfo()
将这样的设备作为调音台,我将Mixer.Info.getName()
解码为错误的unicode。
是否可以控制转换,或者这是Java设计错误?
更新
实际上Java从CP1252解码为unicode,而我的默认语言环境是CP1251。怎么说用CP1251?
答案 0 :(得分:2)
请看下面的链接:
https://bugs.openjdk.java.net/browse/JDK-8177951
http://mail.openjdk.java.net/pipermail/sound-dev/2017-June/000564.html
所以我正在努力解决这个问题,但似乎Oracle中没有人回应我。我把补丁发给了虫子的受让人(由我发布并由受让人管理),但他没有回复我,可能有一天会回来。希望这个补丁将包含在第一个JDK9版本中......
答案 1 :(得分:1)
我有同样的问题(在俄语Windows 7中)。我认为获取俄语设备名称的唯一方法是将其转换为正确的字符集:
for (Mixer.Info info : AudioSystem.getMixerInfo()) {
System.out.println(new String(info.getName().getBytes("Windows-1252"), "Windows-1251"));
}