1
我正在使用.net和java,使用zeromq在它們之間進行通信的項目。zeromq - bytearray(從.net服務器)到java中的字符串
我可以連接到.net服務器,但是當我嘗試將字節數組轉換爲字符串時會發生奇怪的事情。在eclipse調試器中,我可以看到字符串及其長度。當我點擊字符串時,它的值變成只有第一個字母,並且長度變爲1.在eclipse控制檯中,當我嘗試複製並粘貼輸出時,我只收到第一個字母。我也嘗試在NetBeans中運行它並得到相同的問題。
我想這可能是由於字節序,所以有累都 BIG_ENDIAN LITTLE_ENDIAN
任何人都知道我的怎麼弄完整的字符串,而不僅僅是第一個字母?
import java.io.UnsupportedEncodingException;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import org.zeromq.ZMQ;
class local_thr
{
private static final String ENDPOINT = "tcp://127.0.0.1:8000";
static String[] myargs={ENDPOINT, "1000", "100"};
public static void main (String [] args) {
args = myargs;
ZMQ.Context ctx = ZMQ.context (1);
ZMQ.Socket s = ctx.socket (ZMQ.SUB);
s.subscribe("".getBytes());
s.connect (ENDPOINT);
while(true){
byte [] data = s.recv (0);
ByteBuffer buf = ByteBuffer.wrap(data);
buf.order(ByteOrder.nativeOrder());
byte[] bytes = new byte[buf.remaining()];
buf.get(bytes, 0, bytes.length);
String quote;
quote = new String(bytes);
String myQuote;
myQuote = new String();
System.out.println (quote);
}
}
}
感謝您的回覆。我應該包括我以前的嘗試,其中我指定了UTF8(服務器正在發送)並仍然得到相同的結果。我也嘗試過UTF16,但看起來很像中文字符串。 – Magick 2011-12-25 17:06:19
@Magick你是否也在使用相同的。都?說實話,我將重點放在服務器之間的gettimg相同的**字節**上;那麼:這純粹是每一端的編碼問題。 – 2011-12-25 17:08:10
再次感謝馬克,你讓我走在正確的道路上。這是一個編碼問題。原來正確的編碼是UTF-16LE。 – Magick 2011-12-25 17:37:11