JavaScript でシフト JIS の文字列のバイト数を数える (unibon)

1999年09月18日: 新規作成。
JavaScript でシフト JIS の文字列のバイト数を数えます。
JavaScript には length がありますが、これは Unicode を基準として数えますので、文字列をシフト JIS で考えた場合のバイト数を求めることはできません。
ここで作成した function の myLen は半角カナも考慮し、半角カナは1バイトとして勘定します。
VBScript 版は こちら ですが、Web クライアントサイドで使う場合は、JavaScript 版のほうが、Web ブラウザを選ばないという点では良いでしょう。
使用例(WSH):
var x = "abcあいう";
WScript.Echo(myLen(x));

function myLen(s) {
    var r = 0;
    for (var i = 0; i < s.length; i++) {
        var c = s.charCodeAt(i);
        // Shift_JIS: 0x0 〜 0x80, 0xa0  , 0xa1   〜 0xdf  , 0xfd   〜 0xff
        // Unicode  : 0x0 〜 0x80, 0xf8f0, 0xff61 〜 0xff9f, 0xf8f1 〜 0xf8f3
        if ( (c >= 0x0 && c < 0x81) || (c == 0xf8f0) || (c >= 0xff61 && c < 0xffa0) || (c >= 0xf8f1 && c < 0xf8f4)) {
            r += 1;
        } else {
            r += 2;
        }
    }
    return r;
}

JavaScript の目次
ホーム
(このページ自身の絶対的な URL)