From: snickersun Date: Fri, 16 Apr 2021 13:08:45 +0000 (+0800) Subject: protocol_ic BP40 通过 persist.sys.pushtxt_encode 可以选择pushtxt的编解码格式,默认gb2312,可以选择utf-8 X-Git-Url: http://git.snicker.com.cn/?a=commitdiff_plain;h=c681f3b21e6cc084f52494ddd9c4e3f5c1e51669;p=protocol_srv.git protocol_ic BP40 通过 persist.sys.pushtxt_encode 可以选择pushtxt的编解码格式,默认gb2312,可以选择utf-8 --- diff --git a/app/src/main/java/com/enqualcomm/support/utils/Util.java b/app/src/main/java/com/enqualcomm/support/utils/Util.java index b73bac5a..8fa7a314 100644 --- a/app/src/main/java/com/enqualcomm/support/utils/Util.java +++ b/app/src/main/java/com/enqualcomm/support/utils/Util.java @@ -1179,7 +1179,34 @@ public class Util { context.sendBroadcast(intent); } + public static String UrlUTF8ToStrUTF8(String url) { + String ret = ""; + String src = url; + + if (!url.contains("%")) { + int len = url.length(); + //由于协议中GB2312 都是不带% 字头的,和网络中常见的不同,直接2个字节代表一个GB2312字。 + //如果不是2的整倍数,则证明字符串格式有误,取消转换 + if (len % 2 == 0) { + //先给每个unicode字符都加上\\u字头,然后再进行转换。 + StringBuffer sb = new StringBuffer(); + for (int i = 0; i < len; i += 2) { + sb.append("%").append(url.substring(i, i + 2)); + } + src = sb.toString(); + } else { + return ret; + } + } + try { + ret = java.net.URLDecoder.decode(src, "utf-8"); + } catch (Exception e) { + e.printStackTrace(); + ICLogger.e(e.getMessage(), e); + } + return ret; + } public static String UrlGB2312ToUTF8(String url) { String ret = ""; String src = url; diff --git a/app/src/main/java/com/ic/protocols/protocol_ic.java b/app/src/main/java/com/ic/protocols/protocol_ic.java index 1e3e65fa..f492db83 100644 --- a/app/src/main/java/com/ic/protocols/protocol_ic.java +++ b/app/src/main/java/com/ic/protocols/protocol_ic.java @@ -1277,8 +1277,11 @@ public class protocol_ic { sb.append(cmdindex).append(CMDSPLIT).append(TimeUtil.getSystemTimeyyyyMMddHHmmss()).append(CMDSPLIT).append(txtmsg); if (Config.custom_name.equals("VitracK")) { + } else if (Util.getSystemProperties("persist.sys.pushtxt_encode","gb2312").equals("utf-8")) { + // txtmsg = Util.decodeUnicode2Utf8(txtmsg); +// txtmsg = Util.UrlGB2312ToUTF8(txtmsg); + txtmsg = Util.UrlUTF8ToStrUTF8(txtmsg); } else { -// txtmsg = Util.decodeUnicode2Utf8(txtmsg); txtmsg = Util.UrlGB2312ToUTF8(txtmsg); } StringMessage msg = AP40(cmdindex, 1); diff --git a/local.properties b/local.properties index 5021b8e4..90aa6cbd 100644 --- a/local.properties +++ b/local.properties @@ -4,5 +4,5 @@ # Location of the SDK. This is only used by Gradle. # For customization when using a Version Control System, please read the # header note. -#Fri Mar 26 10:19:03 CST 2021 -sdk.dir=E\:\\Android\\Sdk +#Wed Mar 31 10:48:19 CST 2021 +sdk.dir=C\:\\Users\\incar\\AppData\\Local\\Android\\Sdk