gpt4 book ai didi

java - 转换 &#XXXX; Java中的字符到UTF-8

转载 作者:行者123 更新时间:2023-12-02 05:03:44 25 4
gpt4 key购买 nike

我正在使用 GCM 服务来获取推送通知。英文消息按原样接收。

但是当我发送像ארבи 这样的阿拉伯语消息时,我会收到类似这样的消息

انا يمن&#1610

据我所知,这是阿拉伯语 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();
}
}

编辑我也尝试过这个方法

    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("&#1575;&#1606;&#1575; &#1610;&#1605;&#1606;&#1610"));

输出:

I/System.out﹕ انا یمني

关于java - 转换 &#XXXX; Java中的字符到UTF-8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28000695/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com