将ByteMessage
转换为String
的最佳方法是什么?我有以下代码,我们有更干净的方法吗?
BytesMessage byteMessage; // set byteMessage
byte[] byteArr = new byte[(int)byteMessage.getBodyLength()];
for (int i = 0; i < (int) byteMessage.getBodyLength(); i++) {
byteArr[i] = byteMessage.readByte();
}
String msg = new String(byteArr);
答案 0 :(得分:2)
BytesMessage specification有一个方法readUTF()可能会有所帮助。只需调用此方法,就可以将BytesMessage中的所有行替换为String的定义。
答案 1 :(得分:1)
好吧,首先调用readBytes(byte [])可能更有效。
第二,您使用平台字符编码将字节转换为字符串,这总是很危险的。你应该使用一个明确的字符集。已知为消息类型指定的一个,或者可能包含为消息属性的字符集。
答案 2 :(得分:0)
这可能会帮助你
String msg = byteArr.readUTF();
您也可以使用
来避免循环 byteMessage.readBytes(byteArr);
答案 3 :(得分:0)
如果您知道这些字节是UTF-8编码的,请使用BytesMessage.readUTF()
便捷方法:
String s = byteMessage.readUTF();
如果byte[]
数组表示用不同字符编码编码的字符串,例如UTF-16,使用String(byte[], java.lang.String)
构造函数:
byte[] byteArr = new byte[(int)byteMessage.getBodyLength()];
byteMessage.readBytes(byteArr);
String msg = new String(byteArr, "UTF-16");
最后,考虑使用TextMessage
来避免整个喧嚣。