2009/12/18

Javascript 的 length 屬性是依據瀏覽器的顯示編碼去計算字數

也就是說,使用者看到幾個字,length 屬性就回傳幾個字。

比方說有個 textarea 欄位(id="msg")裡有輸入「測試abc」,而該 html 頁面是宣告成 charset=big5,而瀏覽器的顯示編碼也是 big5,
因此看起來就是兩個中文字、三個英文字, document.getElementById('msg').value.length 的回傳值也就是 5。
如果自行調整瀏覽器的顯示編碼,改成是 iso-8859-1 或是 utf-8,
原本的兩個中文在這種情況下會變成四個亂碼,看起來就是七個字元,而此時的 document.getElementById('msg').value.length 的回傳值就是 7。

可以點選右側連結實際測試看看:http://weblog.gilbert.tw/public/js.length.html

PS. 不管 html 本身宣告是何種 charset,使用者都可以自行調整瀏覽器的顯示編碼,因此本文的標題才沒寫成 Javascript 的 length 屬性是依據 html 的 charset 去計算字數。