@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");
对这个问题有什么想法吗?我需要你的帮助,谢谢.
解决方法 试试 URLEncodermb.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消息显示乱码文本所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)