在 PDU 模式下支持 [ 和 ] 字符
Support [ and ] characters in PDU mode
我正在用nodejs编写应用程序,用于在PDU模式下发送和接收短信。我使用wavecom GSM调制解调器(7位编码)发送短信。它还支持 8 位 (AT+CSMP=1,167,0,8) 编码方案。
我可以正确发送字母数字字符。但是我不能发送一些字符,例如([,],| 等)。
这里字符串:
AT+CMGS=14
0001030C911989890878800004015B
文本字符串:[
但我收到了一些垃圾字符。知道吗?
以及如何发送多部分短信。我已经参考了这个,这个,但我没有得到想要的输出。任何人都可以建议8位(7位编码方案)文本编码方案吗?请帮帮我...
根据此页面(请参阅发送 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("-", "");
}
请注意,根据这篇文章,我的代码不适用于编码为代理项对的字符,因为Encoding.BigEndianEncoding
是 UTF-16(不是 UCS-2)。
编辑
以下是在缓冲区类中使用内置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 答案的启发:
- 节点.JS大端 UCS-2
- 如何在节点.js中进行 Base64 编码?
谢谢,
终于我得到了答案:)
此字符 ([,],|) 编码为两个字符,如下所示
[
编码为 1B1E
(转义字符和<符号的组合)>
]
编码为 1B20
(转义字符和>符号的组合)
因此,每当我喜欢这样的字符时,我都会将其替换为相应的值,然后我使用7位编码。这是工作好...
所以我的编码字符串 [ 是
> AT+CMGS=15
> 0001000C911989890878800000021B1E
而对于"[你好]"
> AT+CMGS=21
> 0001000C911989890878800000091B1EBACC66BF373E
再次感谢..
相关文章:
- 在JavaScript中输出转义字符
- 不同浏览器中的空白字符正则表达式行为
- Regex匹配除“”之外的所有字符;.js”;
- jQuery-2.1.1.min.js或最新版本jQuery-2.13.min.js不会't支持'@
- 拆分文本以每隔n个字符添加一行新行,并注意空格
- jQuery检测浏览器是否支持Zoom
- 字符串替换-不支持格式字符'}'
- 如何在不支持HTML字符的邮件正文中发送%签名
- 在粘贴到文本字段Jquery时检查并突出显示不支持的特殊字符
- 数据表求和行以支持字符
- 我想将长文本文档解析为SQLite数据库.如何转义所有不支持的字符
- 删除不受支持的 unicode 字符,否则显示为正方形
- 在 PDU 模式下支持 [ 和 ] 字符
- IE8JQuery对象没有't支持此属性或方法第4行字符6105
- Pebble SDK/SimplyJS不支持 字符
- javascript escape()函数是否支持UTF8字符?
- javascript regex支持UTF8字符与数字和字母
- 为什么jquery id选择器不支持特殊字符
- Ajax响应.getWriter()没有'不支持特殊字符
- Angular ngHint-表达式don't支持连字符