1

例如,当消息中有重音时,我的 Android 短信应用程序中出现了一些奇怪的行为;smsTEXT = "如果您有兴趣,请尽快致电办公室。"

消息在单个 160 个字符的短信长度内,但是当我调用它时;

ArrayList<String> segments = smsManager.divideMessage(smsTEXT);

报告的消息部分数大于 1,实际上是 2

if (segments.size() > 1 ){
    smsManager.sendMultipartTextMessage(etc...)
    nSegments = segments.size();
} else {
    smsManager.sendTextMessage(etc...)
    nSegments = 1;
}

sendMultipartTextMessage无论如何,似乎在单个部分中发送消息非常好(带有严重的口音),而在所有其他方面,该应用程序工作正常

如果我用撇号替换重音,则 size() 只报告一条消息,并且单次发送一条短信sendTextMessage

如果我在消息中添加了几个重音符号,size() 最多会报告 4 个段,尽管看起来sendMultipartTextMessage只发送一条短信

问题:Android 中的 Grave 口音有什么特别之处smsManager吗?

4

1 回答 1

3

Grave 不能用 7 位 ascii 表示(SMS 的默认值)。这就要求它以 16 位字符的形式发送,这将最大字符数减少了一半。因此,即使是一条短消息也需要 2 条 SMS。您将看到表情符号和其他非 ASCII 字符的相同行为。如果您查看在 Android 的消息之类的消息应用程序中发送一条显示文本中剩余字符的 SMS,您会看到只要添加一个非 ASCII 字符,它就会减半(或者如果将它放在中间一个文本,你会看到文本的数量猛增)。

于 2019-06-23T06:11:46.557 回答