BlackBerry的CDMA手机上如何发送中文SMS

本文针对CDMA手机9530在发送中文短信时出现乱码的问题进行了探讨,提出通过设置数据编码为UCS2并使用特定编码格式获取数据的方法来解决这一问题。文中还列举了BlackBerry支持的字符编码及SMSPacketHeader.setMessageCoding可选参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近有朋友反映9530上发中文短信会出乱码。

前一篇Blog已经说明了CDMA上发SMS只能用Datagram来发送,中文乱码问题主要牵涉到一个函数:

SMSPacketHeader.setMessageCoding(Coding):设置发送数据的编码格式,如果不调用的话,由系统来自动选择最有效率的一种编码方式。比如,一般采用ASCII,如果里面包含复杂字符,则采用UCS2编码。

 

 

中文乱码问题在于字符串的获取或者发送不匹配或者不被网络所支持,最简单的做法是把数据都按照UCS2来获取和发送。也就是如下代码中加注释的两行。

 

        public Datagram toDatagram(DatagramConnectionBase datagramConnectionBase) throws IOException

        {      

            DatagramBase datagram = null;                           

            byte[] data = _msg.getBytes("UTF-16BE");//第一步:获取UCS2编码的数据

            datagram = (DatagramBase) datagramConnectionBase.newDatagram();

            SmsAddress smsAddress = new SmsAddress("//" + _address);

            SMSPacketHeader smsPacketHeader = smsAddress.getHeader();

            smsPacketHeader.setMessageCoding(SMSPacketHeader.MESSAGE_CODING_UCS2);//第二部:设置发送数据的编码

            datagram.setAddressBase(smsAddress);           

            datagram.write(data, 0, data.length);        

           

            return datagram;

        }

 

附上,BlackBerry supports the following character encodings:

setMessageCoding支持的参数:

  // Field descriptor #26 I
  public static final int MESSAGE_CODING_DEFAULT = 0;
 
  // Field descriptor #26 I
  public static final int MESSAGE_CODING_8_BIT = 1;
 
  // Field descriptor #26 I
  public static final int MESSAGE_CODING_UCS2 = 2;
 
  // Field descriptor #26 I
  public static final int MESSAGE_CODING_KOREAN_KSX1001 = 6;
 
  // Field descriptor #26 I
  public static final int MESSAGE_CODING_ASCII = 4;
 
  // Field descriptor #26 I
  public static final int MESSAGE_CODING_ISO8859_1 = 5;

 

  • "ISO-8859-1"
  • "UTF-8"
  • "UTF-16BE"
  • "US-ASCII"
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值