Javascript如何將中文轉換Unicode16位元組數組

來源:互聯網
上載者:User

標籤:javascript   中文   位元組   數組   unicode   

之前因為項目的需要,需要把帶有中文的字串轉換成位元組數組和圖片資料合併後,以位元據上傳給伺服器端。

之前,看到網上有利用Array.prototype.map.call(str, function (c) { return c.charCodeAt(0); })方法將字串轉換成位元組數組,但實測結果表明該方式實現了下列功能:

1、若字元是單位元組字元,則用一個小於128的數值來表示。

2、若字元是雙位元組字元,例如中文,則用一個大於256的數值來表示。

根據測試結果表明,該方式僅僅是將字串轉換成了Unicode編碼數組,而非位元組數組。

因此,還需要將產生的數組中值切實的轉換成雙位元組來表示。具體代碼如下:

var str = "轉換測試資料";var arr = Array.prototype.map.call(str, function (c) { return c.charCodeAt(0); });arr = ToUTF16(arr);function ToUTF16(arr) {    var result = new Array();    var k = 0;    for (var i = 0; i < arr.length; i++) {        result[k++] = arr[i] & 0xFF;        result[k++] = arr[i] >> 8;    }    return result;}

根據上述經驗,整理了中文轉換成UTF16和UTF8的代碼如下,在Google的Chrome中測試通過。

function ToUTF16(str) {    var result = new Array();    var k = 0;    for (var i = 0; i < str.length; i++) {        var j = str[i].charCodeAt(0);        result[k++] = j & 0xFF;        result[k++] = j >> 8;    }    return result;}function ToUTF8(str) {    var result = new Array();    var k = 0;    for (var i = 0; i < str.length; i++) {        var j = encodeURI(str[i]);        if (j.length==1) {            // 未轉換的字元            result[k++] = j.charCodeAt(0);        } else {            // 轉換成%XX形式的字元            var bytes = j.split("%");            for (var l = 1; l < bytes.length; l++) {                result[k++] = parseInt("0x" + bytes[l]);            }        }    }    return result;}


Javascript如何將中文轉換Unicode16位元組數組

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.