我正在使用GCM服务来推送notification
。英语消息按原样接收。
但是当我发送像انا يمني
这样的阿拉伯语消息时,我会收到类似这样的内容
انا يمني
这是我所知道的阿拉伯语Unicode。我试图将该消息解码如下,但我的logcat没有任何改变。
sendNotification("News: " + extras.get("message"));
private void sendNotification(String msg) {
try {
String msgDecoded = URLDecoder.decode(msg, "UTF-8");
Log.d(TAG, "Preparing to send notification...: " + msgDecoded);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
Edite 我也试过这种方式
try {
String msgDecoded = URLDecoder.decode(intent.getStringExtra("message"),"UTF-8");
sendNotification(msgDecoded);
Log.i(TAG, "Received: " + msgDecoded);
} catch (UnsupportedEncodingException e)
e.printStackTrace();
}
相同的攻击。</ p>
答案 0 :(得分:2)
&#xxxx;
的字符串为Cp1256
编码。以下函数解码带Cp1256
编码的字符串
private String convertToArabic(String value) {
if(value.indexOf("&#")==-1)
return value;
String newString ="";
value = value.replaceAll("&#","");
String[] characters = value.split(";");
for(int i=0; i<characters.length; i++){
if(characters[i].startsWith(" "))
newString +=" ";
if(characters[i].trim().length()!=4)
newString += characters[i].trim();
else
newString +=(char)Integer.valueOf(characters[i].trim()).intValue()+"";
}
return newString;
}
测试此功能:
System.out.println(convertToArabic("انا يمني"));
<强>输出:强>
I/System.out﹕ انا یمني