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消息作为数据发送