gpt4 book ai didi

javascript - PDU模式支持[和]字符

转载 作者:数据小太阳 更新时间:2023-10-29 04:42:53 26 4
gpt4 key购买 nike

我正在用 nodejs 编写应用程序,用于在 PDU 模式下发送和接收短信。我使用 wavecom GSM 调制解调器(7 位编码)发送短信。它还支持8位(AT+CSMP=1,167,0,8)编码方案。

我可以正确地发送字母数字字符。但是我不能发送一些字符,例如 ([,],| 等)。

这里是字符串:

AT+CMGS=14    
0001030C911989890878800004015B

文本字符串:[

但是我收到了一些垃圾字符。任何的想法?

以及如何发送多部分短信。我引用了this , 和 this但我没有得到想要的输出。谁能建议 8 位(7-bit encoding scheme)文本编码方案?请帮助我...

最佳答案

根据 this page (请参阅发送 Unicode SMS 消息部分),8 位编码实际上是 UCS-2。

我对 nodejs 了解不够,无法为您提供完整的实现,但这里有一个 .NET 示例:

string EncodeSmsText(string text)
{
// Convert input string to a sequence of bytes in BigEndian UCS-2 encoding
// 'Hi' -> [0, 72, 0, 105]
var bytes = Encoding.BigEndianUnicode.GetBytes(text);

// Encode bytes to hex representation
// [0, 72, 0, 105] -> '00480069'
return BitConverter.ToString(bytes).Replace("-", "");
}

请注意根据this post我的代码不适用于编码为代理对的字符,因为 Encoding.BigEndianEncoding 是 UTF-16(不是 UCS-2)。

编辑

这是在 Buffer 类中使用内置 UCS2 转换器的 NodeJS 版本:

function swapBytes(buffer) {
var l = buffer.length;
if (l & 0x01) {
throw new Error('Buffer length must be even');
}
for (var i = 0; i < l; i += 2) {
var a = buffer[i];
buffer[i] = buffer[i+1];
buffer[i+1] = a;
}
return buffer;
}

function encodeSmsText(input) {
var ucs2le = new Buffer(input, 'ucs2');
var ucs2be = swapBytes(ucs2le);
return ucs2be.toString('hex');

}

console.log(encodeSmsText('Hi'));

受这些 SO 答案的启发:

关于javascript - PDU模式支持[和]字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10398581/

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