Javascript的ArrayBuffer從Utf8ArrayToString

因爲項目須要,須要從一個已知的ArrayBuffer中讀取出字符串,雖然環境是typescript,但最終仍是用的js的代碼改了一下解決,typescript

public Utf8ArrayToStr(array):string {
    var out,i,len,c;
    var char2,char3;

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

    return out;
}

有必要的話,可能還得decodeURIComponent一次this

var bufView = new Uint8Array(bin);
var encodedString = this.Utf8ArrayToStr(bufView);
encodedString = decodeURIComponent(encodedString);

這方面找來的資料和網上的一些方法大可能是Unicode編碼處理,對UTF8無效,最後仍是在一個角落裏找來的解決,紀錄一下,省得給忘記了編碼

相關文章
相關標籤/搜索