當你使用UTF8字符時,你很容易在Java端獲得OtpErlangString。如果我只使用ASCII字符,我會得到這種類型的對象。如果我至少添加一個UTF8字符,則生成的類型是OtpErlangList(這是邏輯的,因爲字符串只是Erlang中的整數列表),然後我可以使用它的stringValue()方法。所以,像發送字符串形式二郎後:
([email protected])8> {proc, [email protected]} ! "ąćśźżęółńa".
[261,263,347,378,380,281,243,322,324,97]
在Java的節點我接收和打印:
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 2012-01-16 10:54:09
我不明白。你能提出一種使用它的方法嗎? – 2012-01-16 11:02:21
我的錯誤,我認爲OtpErlangString擴展字符串。 – Reddy 2012-01-16 11:21:21