本帖最后由 yuzhisheng 于 2013-04-10 11:05:00 编辑

解决方案 »

  1.   

    谢谢您的回复,向sdcard中写入文件时试过GBK,GB2312,UTF-8,在模拟器中使用RootExplorer打开仍是乱码“????”.
    我猜是不是手机发送短信时根本就不是用这些编码呢?
      

  2.   

    读取短信的时候用的什么方式呢?
    试试用String来提取短信,看看有没有乱码。
      

  3.   

    读取短信用的是String获取短信的时间,号码,正文,然后用StringBuilder将获取到的字符串拼成一个完整短信,最后使用FileOutputStream将StingBuilder中的内容写入文件。乱码是在写入文件这一步产生的,可能是写入文件时用的编码和获取到的短信内容的编码不一样,但是我不知道短信内容用的是什么编码。
      

  4.   

    哥们在   String content = sms.getMessageBody();直接Toast一下试试,看看乱码嘛?
      

  5.   


    Toast弹出content是乱码,都是“????”。
      

  6.   

    import android.telephony.CbSmsMessage;private Uri storeCBMessage(Context context, CbSmsMessage[] msgs) {
            CbSmsMessage sms = msgs[0];        // Store the message in the content provider.
            int pduCount = msgs.length;
            StringBuilder body = new StringBuilder();
            if (pduCount == 1) {
                // There is only one part, so grab the body directly.
                body.append(sms.getMessageBody());
            } else {
                // Build up the body from the parts.
                for (int i = 0; i < pduCount; i++) {
                    sms = msgs[i];
                    body.append(sms.getMessageBody());
                }
            }
                    
            ContentResolver resolver = context.getContentResolver();
            ContentValues values = getCBContentValue(sms, body.toString());
            return resolver.insert(MESSAGE_URI, values);
        }
    这里面的body.toString()就是你要写入数据库的
      

  7.   

    CbSmsMessage[] msgs = Intents.getMessagesFromIntent(intent);
      

  8.   


    你好,明白你的意思。
    我想做的其实就是备份手机短信,当手机收到短信后通过程序将短信内容写入sdcard中。
    唯一困扰的是备份中文短信后,打开sdcard中的文件就是乱码,可否提供思路,是在哪一步出差错导致了乱码的产生。
      

  9.   

    如果你 String content = sms.getMessageBody();这一步是乱码的话,那应该是短信接收的编码不对
    转个其它编码试试
    content = new String(sms.getMessageBody(), "GBK");

    content = new String(sms.getMessageBody(), "UTF-8");
    等等。
      

  10.   

    其实要实现的功能就是备份短信息,将收到的短信以.txt格式写入sdcard中,但是当短信中含有中文时,备份的.txt打开后是乱码,卡住了,求助各位,给给思路
      

  11.   

    参考下android 信息源码是怎么做的呗,你是保存pdu还是保存pdu解析后的内容呢? 如果是后者,解析的内容应该可以随心所欲的控制啊。
      

  12.   


    是从pdu中取出短信数据
    Object[] pdus = (Object[]) intent.getExtras().get("pdus");
    byte[] sms = (byte[]) p;
    SmsMessage message = SmsMessage.createFromPdu(sms);
                // 获取短信内容
    String content = message.getMessageBody();我认为SmsMessage message = SmsMessage.createFromPdu(sms);这一步就是中文乱码产生的地方,但是具体不知道手机发送中文信息的默认编码是什么。很多第三方短信应用都可以正常收发中文短信,应该就是编码与解码导致乱码。