转换 &#XXX; Java 中的字符转换为 UTF-8
Convert &#XXXX; character to UTF-8 in Java
我正在使用 GCM 服务获取推送 notification
。英文消息按原样接收。
但是当我发送像 انا يمني
这样的阿拉伯语消息时,我收到这样的消息
انا يمني
这是阿拉伯语 Unicode,因为我 know.I 尝试按如下方式解码该消息,但我的 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();
}
}
编辑
我也试过这种方法
try {
String msgDecoded = URLDecoder.decode(intent.getStringExtra("message"),"UTF-8");
sendNotification(msgDecoded);
Log.i(TAG, "Received: " + msgDecoded);
} catch (UnsupportedEncodingException e)
e.printStackTrace();
}
同样的结果。
带有 &#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﹕ انا یمني
我正在使用 GCM 服务获取推送 notification
。英文消息按原样接收。
但是当我发送像 انا يمني
这样的阿拉伯语消息时,我收到这样的消息
انا يمني
这是阿拉伯语 Unicode,因为我 know.I 尝试按如下方式解码该消息,但我的 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();
}
}
编辑 我也试过这种方法
try {
String msgDecoded = URLDecoder.decode(intent.getStringExtra("message"),"UTF-8");
sendNotification(msgDecoded);
Log.i(TAG, "Received: " + msgDecoded);
} catch (UnsupportedEncodingException e)
e.printStackTrace();
}
同样的结果。
带有 &#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﹕ انا یمني