關於javascript如何判斷某個字元是否佔用兩個字元的討論

來源:互聯網
上載者:User
大家一定經常會遇到這樣的問題,一個字串用的長度和實際佔用的位元組數不一樣,這是因為其中包含漢字活著全形字元。

(1)有escape函數,可以取得一個字元的16進位的unicode碼,如:
%u碼  (當碼長為2的時候可以省略u,如果加上u必須在前面填充0一保證4位長)
通過unescape取得16進位碼對應的字元
在網頁中輸出:也可以通過   &#十進位碼;   來輸出某個碼對應的字元。

(2)javascript中還可以從一個字串中用 串.charCodeAt(i)取得該字元的10進位的unicode 碼,

可以通過String.fromCharCode(十進位碼)取得該碼對應的字元

但是我還是沒有找到一個合理的爭取得方法來判斷一個字元到底佔用幾個位元組。

有人說 十進位unicode碼大於255的字元就佔用兩個位元組,不知道是否有根據。

(3)vbscript中我通過判斷其asc碼是否為負數來判斷其是否佔用兩個位元組,這種判斷是否正確(asc()取得某字元的asc碼,chr()取得某asc碼對應的字元)

(4)那麼javascript中如何獲得asc碼?這個需要大家幫忙!
unicode碼和asc碼是否是同一種碼?  我認為不是

(5)我發現asc一般是從32到128,然後就是負數。從0到31是什嗎?129以後是什嗎?不知道。
而負數asc,我們都認為他是佔用兩個位元組的漢字,全形字元和特殊字元。
從0-128這一段,unicode和asc一樣的。而從unicode從129以上的有一部分的asc為負數,有一部分沒有asc,所以我認為是不是可以認為unicode從129以上的就都佔用兩個字元呢?

也就是現在有一個矛盾,是不是asc碼為負數的都是雙位元組字元,如果這個成立,那麼就得出unicode為129以上的都是雙位元組字,而網上流傳著的卻是
String.prototype.len=function()
{
    return this.replace(/[^/x00-/xff]/g,"**").length;
}
也就是256以上才認為是雙位元組字。而129-255都被認為是單位元組字。

大家討論一下。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.