Android设备上的文本消息的默认字符集/编码是什么?

时间:2010-12-30 17:16:10

标签: android encoding character-encoding sms

如果有必要保持简单,我主要关注北美的英语手机。

具体而言 - 在发送/接收短信和彩信时,如何编码字符?有区别吗?

我的初步研究表明UTF-8是默认设置,但我也看到了US-ASCII对美国设备和其他字符集的其他字符集的引用。

2 个答案:

答案 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,以下选项可用(未指定时使用大字节序或网络字节顺序):

  • US-ASCII
  • ISO-8859-1
  • ISO-8859-2
  • ISO-8859-3
  • ISO-8859-4
  • ISO-8859-5
  • ISO-8859-6
  • ISO-8859-7
  • ISO-8859-8
  • ISO-8859-9
  • SHIFT-JIS
  • UTF-8
  • BIG5
  • UCS2
  • UTF-16
但是,除非您发送非常长的消息(长度大于4个PDU,在Android上为560字节),或者消息中包含图像或无法编码为纯SMS的内容,否则通常不使用

MMS。

值得注意的是,MMS比SMS慢得多,因为它使用具有特殊寻址(不基于DNS)和特殊多部分内容类型(有关详细信息,请参见MM4)的SMTP协议。