Java 使用连接非ascii字符创建的字符串在作为文本消息发送时会产生垃圾
我有以下代码:Java 使用连接非ascii字符创建的字符串在作为文本消息发送时会产生垃圾,java,android,string,character-encoding,sms,Java,Android,String,Character Encoding,Sms,我有以下代码: smsManager.sendTextMessage(number, null, msgs[i].getMessageBody().toString() + "ławka", null, null); 在将ł更改为l时,我可以顺利发送消息,而在使用ł时,我的消息中会出现垃圾 我尝试了以下同样的效果: message = msgs[i].getMessageBody().toString() + " ławka"; byte b[] = null
smsManager.sendTextMessage(number, null,
msgs[i].getMessageBody().toString() + "ławka", null, null);
在将ł
更改为l
时,我可以顺利发送消息,而在使用ł
时,我的消息中会出现垃圾
我尝试了以下同样的效果:
message = msgs[i].getMessageBody().toString() + " ławka";
byte b[] = null;
try {
b = message.getBytes("UTF-8");
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage(number, null, new String(b, "UTF-8"), null, null);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
编辑
我也试过:
Locale l = Locale.getDefault();
message = String.format(l, "%s %s", msgs[i].getMessageBody().toString() ,"ławka");
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage(number, null, message, null, null);
在SMS PDU中,文本的有效负载为7比特ascii。Unicode,16位,是一种数据消息类型。我不知道这个SmsManager,但我认为您需要将unicode消息作为数据发送