我在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");
有关这个问题有什么想法吗?我需要你的帮助,谢谢。