日本語を 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 に変換すれば問題が無くなりました。そんなに検証してないので問題あったら教えて欲しいっす!

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();
        
    };
    
  }
}