1

ロシア語で名前が付けられたいくつかのデバイスを備えたロシア語の Windows 7 があります。ミキサーなどのデバイスを取得した場合、Unicode に間違っAudioSystem.getMixerInfo()てデコードされています。Mixer.Info.getName()

変換を制御することは可能ですか、それとも Java 設計のバグですか?

アップデート

私のデフォルトのロケールはCP1251ですが、実際にはJavaはCP1252からユニコードにデコードします。CP1251を使うと言うのは?

4

2 に答える 2

2

以下のリンクをご覧ください:
https://bugs.openjdk.java.net/browse/JDK-8177951

そのため、このバグの修正に取り組んでいますが、オラクルの誰も私に応答していないようです。私はバグの担当者にパッチを送信しました (私が投稿し、担当者が管理しています) が、彼は私に返信しませんでした。このパッチが最初の 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 に答える