是否可以控制Mixer.Info charset?

时间:2012-03-23 18:20:52

标签: java audio unicode internationalization mixer

我有一些俄语Windows 7和一些用俄语命名的设备。如果我通过AudioSystem.getMixerInfo()将这样的设备作为调音台,我将Mixer.Info.getName()解码为错误的unicode。

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

更新

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

2 个答案:

答案 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"));
    }