日本語を Max6 から Processing に OSC 経由で送る際の文字化けについて

oscP5-1

Max6 は文字コードのエンコーディングに UTF-8 を、Processing は内部的には Java なので UTF-16 を用いているのではと推測されます。そのため Processing 向けのoscP5は、Max6から受け取った UTF-8 の日本語バイト列を toString() すると、UTF-16 として解釈して文字化けしてしまいます(たぶん)。OscMessage や OscArgument のクラスなどひと通りみたのですが、エンコーディングに関するメソッドが見当たりませんでした。

そこで対策ですが、Max6 から受け取った OscMessage の Byte 列を一旦 UTF-8 として String に変換すれば問題が無くなりました。そんなに検証してないので問題あったら教えて欲しいっす!

[java]
void oscEvent(OscMessage theOscMessage) {

//このprintでは日本語の文字化けが確認される。
theOscMessage.print();

//OSCをByte列として取得
byte[] bytes = theOscMessage.getBytes();

try {

//Byte列をUTF-8として解釈
String str = new String(bytes, "UTF-8");

//Addrpatternとtypetagを削除する
String typeTagStr = theOscMessage.typetag();
str = str.substring(str.indexOf(typeTagStr) + typeTagStr.length());

//コンソールにMax6から送った日本語のメッセージが表示される
println("String:"+str);

}
catch(UnsupportedEncodingException e) {

e.printStackTrace();

};

}
}
[/java]