UTF8文字を使用すると、Java側でOtpErlangStringを取得するのが奇妙です。私はASCII文字のみを使用する場合、私はこのタイプのオブジェクトを取得します。少なくとも1つのUTF8文字を追加すると、結果の型はOtpErlangList(文字列はErlangのintのリストにすぎません)であり、stringValue()メソッドを使用できます。
のJavaノードで
([email protected])8> {proc, [email protected]} ! "ąćśźżęółńa".
[261,263,347,378,380,281,243,322,324,97]
私が受信して、それを印刷::のようにErlangの形式の文字列を送信した後になるように
OtpErlangList l = (OtpErlangList) mbox.receive();
System.out.println(l.stringValue());
出力が正しい:
ąćśźżęółńa
しかし、そのない場合あなたの状況のケースでは、例えばOtpErlangList表現を強制することによってそれを回避しようとすることができます文字列リストの最初の要素として空のタプルを追加:
([email protected])11> {proc, [email protected]} ! [{}] ++ "ąćśźżęółńa".
[{},261,263,347,378,380,281,243,322,324,97]
とJava側のような何か:
OtpErlangList l = (OtpErlangList) mbox.receive();
// get rid of an extra tuple
OtpErlangObject[] strArr = Arrays.copyOfRange(l.elements(), 1, l.elements().length);
OtpErlangList l2 = new OtpErlangList(strArr);
System.out.println(l2.stringValue());
んjava.io.StringReaderの助けを? – Reddy
どのように表示されません。それを使用する方法を提案できますか? –
私の間違い私はOtpErlangStringがStringを拡張すると思った。 – Reddy