android – 收到的GCM消息显示乱码文本

android – 收到的GCM消息显示乱码文本,第1张

概述我在Google App Engine上部署了一个Servlet,它扮演着向GCM发布广播消息的角色. Android客户端将从GCM接收该广播消息. Servlet使用以下代码段扩展BaseServlet. @Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOExce 我在Google App Engine上部署了一个Servlet,它扮演着向GCM发布广播消息的角色. Android客户端将从GCM接收该广播消息. Servlet使用以下代码段扩展BaseServlet.

@OverrIDeprotected 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广播.

@OverrIDeprotected 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");

对这个问题有什么想法吗?我需要你的帮助,谢谢.

解决方法 试试 URLEncoder

mb.addData("message",URLEncoder.encode("世界","UTF-8");

另外一个选项:

mb.addData("message",new StringEntity("世界","UTF-8");

在查看GCM的源代码:com.Google.androID.gcm.server.Sender之后,它使用httpPost作为Json,并且Java在内部使用UTF-16,因此在发布之前,您需要对其进行正确编码.

并且如评论所述,在客户端解码字符串

String yourAwesomeUnicodeString=URLDecoder.decode(intent.getStringExtra("message"),"UTF-8");
总结

以上是内存溢出为你收集整理的android – 收到的GCM消息显示乱码文本全部内容,希望文章能够帮你解决android – 收到的GCM消息显示乱码文本所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1129860.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存