我想弄清楚如何获取一个字符串,该字符串可能包含也可能不包含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