问题描述

最近有个需求,要吧二维码解析成文本,用qrcode解析英文是正常的,解析成中文的时候会乱码,找了好久的资料,暂时是解决了, 不知道是不是具有通用性,先记录一下

参考文档
参考了上面这位大佬的代码。用他提供的方法做了转换,但是还是乱码。问题并没有得到解决

后面又找到如下方法:

function decodeStr(str) {
            var out, i, len, c;
            var char2, char3;
            out = "";
            len = str.length;
            i = 0;
            while (i < len) {
                c = str.charCodeAt(i++);
                switch (c >> 4) {
                    case 0:
                    case 1:
                    case 2:
                    case 3:
                    case 4:
                    case 5:
                    case 6:
                    case 7:
                        // 0xxxxxxx
                        out += str.charAt(i - 1);
                        break;
                    case 12:
                    case 13:
                        // 110x xxxx 10xx xxxx
                        char2 = str.charCodeAt(i++);
                        out += String.fromCharCode(((c & 0x1F) << 6) | (char2 & 0x3F));
                        break;
                    case 14:
                        // 1110 xxxx 10xx xxxx 10xx xxxx
                        char2 = str.charCodeAt(i++);
                        char3 = str.charCodeAt(i++);
                        out += String.fromCharCode(((c & 0x0F) << 12) |
                            ((char2 & 0x3F) << 6) |
                            ((char3 & 0x3F) << 0));
                        break;
                }
            }
            return out;
        }

通过该方法,将的到的字符串做转换,得到正确的中文。
问题搞定。


菠菜
92 声望6 粉丝