使用GSM-7和UCS-2的SMS的拆分字符串

时间:2018-07-20 17:34:43

标签: c# .net vb.net character-encoding sms

我想弄清楚如何获取一个字符串,该字符串可能包含也可能不包含emoji等unicode,并将其正确拆分为可以通过SMS发送的“部分”。我使用多个不同的SMS API,不能完全依靠它们(或正确地)将它们串联起来,所以我宁愿自己负责拆分消息。另外,我想实现某种自动换行功能,以便在强行拆分消息时,我不会将单词切成两半,而是将其推送到下一个SMS中。

据我了解,SMS限制为160个字符,如果是串联则限制为153个,但是严格来说是GSM-7的7位字符,而从UCS-2中添加unicode字符会使字符限制大大降低因为UCS-2编码的字符占用了更多字节。因此似乎无法计算字符,因此我需要以某种方式拆分字节而不破坏消息。

我试图弄清楚怎么写:

- get bytes of msgBody string
- get encoding type of msgBody, GSM-7 or UCS-2
- get max byte size of that encoding type
- if msgBody byte size = multiple messages, split into parts
- if first part's last character isn't whitespace, push the cut-up word's first half into the next message
- somehow insure that pushing those bytes along doesn't result in the next message being too large

0 个答案:

没有答案