Можно ли управлять кодировкой Mixer.Info? - PullRequest
1 голос
/ 23 марта 2012

У меня русская Windows 7 с некоторыми устройствами, названными по русски. Если я получу такое устройство, как микшер через AudioSystem.getMixerInfo(), у меня будет Mixer.Info.getName(), неправильно декодированный в Unicode.

Возможно ли управлять преобразованием или это ошибка проектирования Java?

UPDATE

На самом деле Java декодирует из CP1252 в Unicode, в то время как моя локаль по умолчанию - CP1251. Как сказать, чтобы использовать CP1251?

Ответы [ 2 ]

2 голосов
/ 26 июня 2017

Просто посмотрите ссылки ниже:
https://bugs.openjdk.java.net/browse/JDK-8177951
http://mail.openjdk.java.net/pipermail/sound-dev/2017-June/000564.html

Итак, я работаю над исправлением этой ошибки, но, похоже, никто в Oracle не отвечает мне. Я отправил патч правопреемнику об ошибке (он размещен мной и управляется правопреемником), но он не ответил мне, может быть, когда-нибудь позже. Надеюсь, этот патч будет включен в первый релиз JDK9 ...

1 голос
/ 14 мая 2012

У меня такая же проблема (на русском Windows 7). Я думаю, что единственный способ получить имя устройства на русском языке - преобразовать его в правильный набор символов:

    for (Mixer.Info info : AudioSystem.getMixerInfo()) {
        System.out.println(new String(info.getName().getBytes("Windows-1252"), "Windows-1251"));
    }
...