Android smsManager 处理重音符号

Android smsManager handling Grave accent character

在我的 Android 短信应用程序中出现一些奇怪的行为,例如,当消息中有重音时; smsTEXT = "Pls call the office asap if you`re keen."

消息在单个 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 smsManager..中的重音有什么特别之处吗?

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