Java の Sound API を使用した際に文字化けが起こってしまう問題に関しての質問です。
実行環境は以下です。
・OS: Windows 7 (Windows XP でも同様の問題が発生)
・Java のバージョン: JRE 6
javax.sound.sampled.AudioSystem クラスの getMixerInfo メソッドを使用すると、そのシステムで使用可能なミキサーの情報一覧を取得できますが、このとき、取得したミキサーの情報に含まれる非 ASCII 文字が文字化けしてしまうという問題に直面しています。
具体的な例として、以下にソースコードと出力結果を表示します。
文字化けを回避できるような方法をご存知の方はぜひお教えください。
よろしくお願いします。
=== ソースコード ここから =====
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Mixer;
public class App {
public static void main( String[] args ) {
Mixer.Info[] mixerInfoList = AudioSystem.getMixerInfo();
for( Mixer.Info info : mixerInfoList ) {
System.out.println( info.getName() );
}
}
}
=== ソースコード ここまで =====
上のプログラムを実行すると、以下のように出力されます。
ご覧の通り文字化けしてしまっています。
=== 出力 ここから =====
Java Sound Audio Engine
Microsoft ?T?E???h
?}?C?N (High Definition Aud
?f?W?^?? ?I?[?f?B?I (
Port ?f?W?^?? ?I?[?f?B?I (
Port ?f?W?^?? ?I?[?f?B?I (
Port ?}?C?N (High Definition Aud
=== 出力 ここまで =====
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
>・Java のバージョン: JRE 6
環境の言語~文字コードは?
JDKのバージョンは?
このJRE 6は要らないのでは?
javacとjavaが同じバージョンか、確認して。
ちなみに私の出力は正常(on Ubuntu 9.10, javac 1.6.0_18, java version "1.6.0_18"):
I82801BAICH2 [plughw:0,0]
I82801BAICH2 [plughw:0,1]
Java Sound Audio Engine
Port I82801BAICH2 [hw:0]
返信が遅くなってしまい申し訳ありません。 回答ありがとうございます。
JRE6 ではなく JDK6 の間違いでした。 詳しいバージョン番号は、javac, java それぞれ
javac 1.6.0_20
java version "1.6.0_20"
です。
OS でデフォルトで使用している言語は日本語で、文字コードは不明です。
(Windows 7 なので内部的には UTF-16 で、入出力には CP932 を使用していると思うのですが、どのように確認すればよいのかわかりません。 申し訳ありません。)
Java の System のプロパティでは文字コードを設定しているプロパティが 2 つありましたが、それらの値を UTF-32, UTF-16, UTF-8, MS932 などで変化させてみましたが出力は変化しませんでした。
Java の System のプロパティは System.getProperties メソッドで確認しました。 文字コードが設定されていたプロパティは以下の 2 つでした。
・sun.jnu.encoding=MS932
・file.encoding=UTF-8
私の方の環境でも、デバイスの情報に非 Ascii 文字が含まれていない場合は問題なく表示されます。 非 Ascii 文字が含まれている場合に文字化けしてしまうため、Java のシステムが Windows から情報を取得する際に文字コードの非一致が起こって、文字化けしてしまっているのだと思います。
何かご存知でしたらよろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- Java java 飾子を付けること(public static・・・) ・コンソールへの出力処理はmainメ 2 2022/06/16 19:34
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- Ruby 【JAVA】数字をひし形に出力するプログラムについて 2 2022/07/11 23:32
- Java Java プログラム public class Main { public static void 3 2023/08/10 23:46
- その他(プログラミング・Web制作) プログラミング pythonの問題について 2 2022/04/19 00:41
- Java Javaの問題なのですが、「3文字以上の英数字文字列を入力し、文字列の中に文字(9)が出てくるまでの 1 2023/06/06 18:55
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- その他(スマートフォン・携帯電話・VR) ファイル文字化け直せますか? 5 2023/03/19 11:24
- C言語・C++・C# C#の問題です。 文字列型の配列 s[100] にキーボードから入力された100文字以内の文字列(単 2 2022/06/22 15:18
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Log4jで機能毎に別ファイルへ出...
-
Javaで改行などが出来ないのです。
-
flush()とclose()について
-
1~100までの数字を表示し、か...
-
System.err. printlnとSystem.o...
-
StringBufferで改ページ処理を...
-
Eclipseのコンソールを常に表示...
-
1~100までの数字を表示したい
-
system.out.printが出力されない
-
HashMapの内容
-
Javascript で、0000 から 9999...
-
PrintWriterとBufferedWriterの...
-
System.out.printlnの意味がよ...
-
ジャバスクリプトについて。
-
JAVAのServletで、画像表示につ...
-
stderrとstdout
-
VBSエラー"オブジェクト型の変...
-
大容量のテキストファイルの内...
-
Java 九九の表について
-
javaのUDP受信プログラムについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
System.err. printlnとSystem.o...
-
1~100までの数字を表示し、か...
-
Javaで改行などが出来ないのです。
-
Log4jで機能毎に別ファイルへ出...
-
1~100までの数字を表示したい
-
flush()とclose()について
-
System.out.printlnの出力先
-
ジャバスクリプトについて。
-
system.out.printが出力されない
-
Eclipseのコンソールを常に表示...
-
System.out.printlnの意味がよ...
-
一定のスペースを空けて端を揃...
-
switch分が機能しません。
-
Tomcatが無応答となる現象が起...
-
javaのwhile文で九九の表
-
Javaの問題なのですが、 永久ル...
-
JavaScriptの変数をjavaのメソ...
-
テキストエリアで改行する
-
StringBufferで改ページ処理を...
-
VBSエラー"オブジェクト型の変...
おすすめ情報