我在 Google App Engine 上部署了一个 Servlet,它的作用是向 GCM 发布广播消息。Android 客户端将从 GCM 接收该广播消息。Servlet使用以下代码片段扩展了BaseServlet 。
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException {
//when receiving a gcm broadcast request, send message to GCM
Builder mb = new Message.Builder();
mb.addData("message", "The message to send");
Message message = mb.build();
sender.sendNoRetry(message, regIds);
...
}
当“要发送的消息”是英文时,一切都很好。但是如果将“要发送的消息”换成中文等其他语言,Android客户端会收到一串乱码。在 Android 客户端上,我使用一个类扩展 GCMBaseIntentService 来处理 GCM 广播。
@Override
protected void onMessage(Context context, Intent intent) {
String message = "";
message = intent.getStringExtra("message")!=null ? intent.getStringExtra("message") : "";
doNotify(message);
}
我试图重新编码消息,但不起作用。
message = new String(message.getBytes("ISO-8859-1"), "UTF-8");
对这个问题有任何想法吗?我需要你的帮助,谢谢。