Java 是否将字节消息转换为字符串?
将Java 是否将字节消息转换为字符串?,java,jms,Java,Jms,将字节消息转换为字符串的最佳方法是什么?我有以下代码,我们有更干净的方法吗 BytesMessage byteMessage; // set byteMessage byte[] byteArr = new byte[(int)byteMessage.getBodyLength()]; for (int i = 0; i < (int) byteMessage.getBodyLength(); i++) { byteArr[i] = byteMessage.readByte()
字节消息
转换为字符串
的最佳方法是什么?我有以下代码,我们有更干净的方法吗
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);
BytesMessage byteMessage;//set byteMessage
byte[]byteArr=新字节[(int)byteMessage.getBodyLength()];
对于(int i=0;i<(int)byteMessage.getBodyLength();i++){
byteArr[i]=byteMessage.readByte();
}
String msg=新字符串(byteArr);
这可能会对您有所帮助
String msg = byteArr.readUTF();
您还可以通过使用
byteMessage.readBytes(byteArr);
如果您知道这些字节是UTF-8编码的,请使用方便的方法:
String s = byteMessage.readUTF();
如果字节[]
数组表示使用不同字符编码(例如UTF-16)编码的字符串,请使用构造函数:
byte[] byteArr = new byte[(int)byteMessage.getBodyLength()];
byteMessage.readBytes(byteArr);
String msg = new String(byteArr, "UTF-16");
最后,考虑使用以避免整体加速。
嗯,首先调用Read Byth[Byth[] ]可能更有效。
其次,使用平台字符编码将字节转换为字符串,这总是很危险的。您应该使用显式字符集。可以是为消息类型指定的一个,也可以是作为消息属性包含的字符集。具有可能有用的readUTF()方法。只需调用此方法来替换从byteMessage到字符串定义的所有行。显而易见的方法是
byteMessage.toString()
,或者您想要其他格式?我只需要正文消息,而不需要标题…为什么不需要?我会再次检查javadoc的。你是对的,我快速浏览了javadoc,没有发现它在谈论两个不同的案例。