长短信发送Emoji 图标被截断的问题分析

原创 2015年07月10日 11:07:42

问题:用安卓手机给iPhone发短信,短信内容是图标,超过一屏的时候,iPhone显示不出来。用三星手机之类的发,都有类似问题,严重的是整条短信都显示不了,好一点的是只有被截断的图标显示乱码。

截屏:
截图

大概了解一下,应该是字符集的问题,有字符被截断了。

短信使用7-bit,8-bit和UCS-2编码。从截图看,每个图标占用了4个字节,而不是2个字节。
这是怎么回事?

Uncode的百度百科上找到答案
D800-DB7F:高位替代(High Surrogates)
DB80-DBFF:高位专用替代(High Private Use Surrogates)
DC00-DFFF:低位替代(Low Surrogates)
2个UCS-2编码(高位+低位),经过转换后变成一个UTF-16编码,从而扩展了表达范围。
这里的高位专用替代表示转换出来的UTF-16处于专用区内。所谓专用区,就是保留给大家放自定义字符的区域
UCS-2编码,如果高位是0xD800-0xDBFF,低位是0xDC00-0xDFFF,则表示是一个UTF-16编码。很明显,这种EMOJI图标用的就是扩展编码了。

代码修改
SmsMessage.java,fragmentText函数中增加以下代码

// check if UTF-16. Higher half range is 0xD800-0xDBFF, Lower half range is 0xDC00 - 0xDFFF
if( textLen > nextPos ){
    int lastChar = new Integer(text.charAt(nextPos-1));
    int nextChar = new Integer(text.charAt(nextPos));
    if( (lastChar >= 0xD800) && (lastChar <= 0xDBFF)
        && (nextChar >= 0xDC00) && (nextChar <= 0xDFFF)){
        nextPos -= 1;
        Rlog.d(LOG_TAG, "UTF-16, nextPos - 1");
    }
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

xmldocument对象用save方法时出现"代理项对无效"错误

 我用的数据库是postgresql 其中有一个表如下:CREATE TABLE pub_data_ip(  beginip numeric(19) NOT NULL,  endip numeric(...

解决Editor.md中Github emoji图标无法显示的问题

解决Editor.md中Github emoji图标无法显示的问题

发送短信,长短信,群发短信

  • 2016年08月22日 16:35
  • 2.74MB
  • 下载

微信公众号自定义菜单添加emoji表情图标

微信公众号自定义菜单添加emoji表情图标 第一步:打开微信公众平台接口调试工具,点击前往接口调试工具; 第二步:把这段代码  {"button":[{"sub_button":[{"ty...

pdu长短信接收及发送

  • 2014年09月10日 10:38
  • 126KB
  • 下载

Shell脚本:用于OpenVox GSM(Asterisk Card)卡发送长短信

OpenVox的GSM卡支持两种短信发送模式: text和pdu模式. 用户可以通过CLI控制台命令自行设定发送模式. 由于当前对于text模式每次只支持140个字节发送,pdu每次发送只支持70个字...

c#实现wavecom短信猫发送长短信

长短信是有规约的,协议头部分如果是0x40以下,则说明是普通短信,如果是0x40以上,则是长短信,然后在短信内容部分,有六个字节分别定义短信唯一标识以及该短信是第几条,所以长短信发送时每条实际为67个...

短信发送和存入发件箱-区分长短信-发送状态监听获取数据

前端时间通过客户端对短信发送数量做日志统计,后来发现没那么简单,只从手机端很难做到准确统计。因为存在一下问题: 1.短信作为长短信发送,但是移动会按实际字数,70字一条收取费用。 2.很难获得发送...

iOS中UITextField的字数限制 emoji被截断问题

在开发中, 有些时候会碰到这样的需求: 希望输入框有最大字数限制. 比如, 用户昵称长度限制, 评论最大字数限制. 刚开始的时候, 采用的是shouldChangeCharactersInRange...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:长短信发送Emoji 图标被截断的问题分析
举报原因:
原因补充:

(最多只允许输入30个字)