如果有必要保持简单,我主要关注北美的英语手机。
具体而言 - 在发送/接收短信和彩信时,如何编码字符?有区别吗?
我的初步研究表明UTF-8
是默认设置,但我也看到了US-ASCII
对美国设备和其他字符集的其他字符集的引用。
答案 0 :(得分:3)
引用:
该平台的默认字符集 是UTF-8。 (这与某些人形成鲜明对比 旧的实现,其中 默认字符集取决于用户的 区域设置。)
可在此处找到更多信息: Charset| Android Developers
答案 1 :(得分:0)
如果您使用表情符号或GSM 03.38无法直接编码的文本,则美国的简短答案是GSM 03.38和UTF-16BE。
在发送/接收SMS时,encoding绝对不是UTF-8,因为PDU或SMPP协议不支持。搜索SMPP spec,以了解受支持的内容。在所有受支持的编码中,唯一的Unicode兼容选项是UCS-2BE。我的观察是,大多数电话(包括所有Android和iPhone)assume实际上是UTF-16BE,因为它允许使用完整的Unicode字符集(包括Emojis️之类的东西)。
SMS在GSM03.38规范下还具有特殊的强制性编码,该编码是基于片段的。每个PDU最多允许160个字符(因为使用许多编码,并非所有字符都是1个代码单位)。
彩信完全是另一种动物,在北美以外的地区并没有得到很好的支持。但是对于MMS encoding,以下选项可用(未指定时使用大字节序或网络字节顺序):
MMS。
值得注意的是,MMS比SMS慢得多,因为它使用具有特殊寻址(不基于DNS)和特殊多部分内容类型(有关详细信息,请参见MM4)的SMTP协议。