protocol_ic BP40 通过 persist.sys.pushtxt_encode 可以选择pushtxt的编解码格式,默认gb2312,可以选择utf-8
authorsnickersun <scy@incartech.cn>
Fri, 16 Apr 2021 13:08:45 +0000 (21:08 +0800)
committersnickersun <scy@incartech.cn>
Fri, 16 Apr 2021 13:08:45 +0000 (21:08 +0800)
app/src/main/java/com/enqualcomm/support/utils/Util.java
app/src/main/java/com/ic/protocols/protocol_ic.java
local.properties

index b73bac5..8fa7a31 100644 (file)
@@ -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;
index 1e3e65f..f492db8 100644 (file)
@@ -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);
index 5021b8e..90aa6cb 100644 (file)
@@ -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