gpt4 book ai didi

java - 接受 Unicode 短信

转载 作者:行者123 更新时间:2023-12-01 15:13:47 26 4
gpt4 key购买 nike

我想从 jSMPP 接收 Unicode 短信。

如果数据编码是8,我想将其转换为Unicode符号。

为此,我使用 HexUtil.convertBytesToHexString 函数。

但它没有正确转换。我怎样才能转换这个字符串?

        @Override
public void onAcceptDeliverSm(DeliverSm arg0)
throws ProcessRequestException {
if (MessageType.SMSC_DEL_RECEIPT.containedIn(arg0.getEsmClass())) {
// Deliver SM
} else {
byte[] data = arg0.getShortMessage();
String text = null;

if (arg0.getShortMessage() != null) {
if (arg0.getDataCoding() == (byte) 8) {
text = HexUtil.convertBytesToHexString(data, 0,
data.length);
} else {
text = new String(data);
}
}

System.out.println("Text -> " + text);
}
}

最佳答案

尝试这种方式(使用您自己的编码检测):

        if (msg.getEncoding().equals(Message.MessageEncodings.ENC7BIT)) {
text = msg.getText();
} else if (msg.getEncoding().equals(Message.MessageEncodings.ENCUCS2)) {
try {
text = new String(msg.getText().getBytes(), "UTF-16");
} catch (Exception ex) {
Logger.getLogger("smpp").error("Can't parce USC2 text: " + msg.getText() + ", " + ex.getMessage());
}
}

如果UTF-16显示不正确,你也可以尝试UTF-16LE、UTF-16BE编码

关于java - 接受 Unicode 短信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11931091/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com