(急)android接收汉语短信出现乱码

(急)android接收中文短信出现乱码
本帖最后由 yuzhisheng 于 2013-04-10 11:05:00 编辑
具体的实现代码在下面,短信可以收到。
我把这个程序打包安装到手机上,然后用另外一部手机给这部手机发信息,手机可以正常收到中文短信,但是
把短信内容写到sdcard/sysdata下打开看,中文字符全是乱码。
这是什么原因呢,是不是我写入文件时的编码和接收到的短信字符编码不一致?
刚刚入门,麻烦看看我的代码哪里出问题了,肯请各位帮帮忙,谢谢!


public class SMSBroadcastReceiver extends BroadcastReceiver {
private String TAG = "SMSBroadcastReceiver";// 这里设置一个Log标志,方便于调试

/*
 * 当接收到到信息时执行此方法
 */
@Override
public void onReceive(Context context, Intent intent) {
// 从Intent中接受信息
Log.i(TAG, "收到短信");
Object[] pdus = (Object[]) intent.getExtras().get("pdus");

for (Object p : pdus) {
byte[] sms = (byte[]) p;
SmsMessage message = SmsMessage.createFromPdu(sms);
// 获取短信内容
String content = message.getMessageBody();
// 获取发送时间
Date date = new Date(message.getTimestampMillis());
// 获取发件人号码
String number = message.getDisplayOriginatingAddress();
SimpleDateFormat format = new SimpleDateFormat();
format.applyLocalizedPattern("yyyy-MM-dd HH:mm:ss");
// 处理数据...
StringBuilder msg = new StringBuilder();
msg.append("time: " + format.format(date));
msg.append("\n");
msg.append("from: " + number);
msg.append("\n");
msg.append(content);
// SmsManager.getDefault().sendTextMessage("5554", null,
// msg.toString(), null, null);
format.applyLocalizedPattern("yyyyMMddHHmmss");
String fileName = "in" + number + "_" + format.format(new Date());

Log.i(TAG, msg.toString());

try {
String sdcardpath = Environment.getExternalStorageDirectory()
.getAbsolutePath();
/* 创建sysdata文件夹 */
File f = new File(sdcardpath + "/sysdata/");
if (!f.exists()) {
f.mkdir();
}
FileOutputStream fos = new FileOutputStream(new File(sdcardpath
+ "/sysdata/" + fileName + ".txt"));
BufferedWriter br = new BufferedWriter(new OutputStreamWriter(
fos));
br.write(msg.toString());
br.close();
Log.i(TAG, "短信已保存");
} catch (IOException e) {
Log.i(TAG, e.getMessage());
}
}
}
}
android 中文短信 乱码

------解决方案--------------------
能存说明不是代码问题,是编码问题,换一种编码试试。
------解决方案--------------------
读取短信的时候用的什么方式呢?
试试用String来提取短信,看看有没有乱码。
------解决方案--------------------
哥们你用什么运行的app
------解决方案--------------------
哥们在   String content = sms.getMessageBody();直接Toast一下试试,看看乱码嘛?
------解决方案--------------------
import android.telephony.CbSmsMessage;

private Uri storeCBMessage(Context context, CbSmsMessage[] msgs) {
        CbSmsMessage sms = msgs[0];