| ページ一覧 | ブログ | twitter |  書式 | 書式(表) |

MyMemoWiki

JavaScript UTF-8文字列のバイト数を得る

提供: MyMemoWiki
ナビゲーションに移動 検索に移動

JavaScript UTF-8文字列のバイト数を得る

文字化けの対処 | JavaScript |

参考

以下を参考に

/*
 * 指定された文字列のバイト長(UTF-8)を得る
 */
function getBytes(str) {
    // URLエンコードされる文字列
    var ESCAPECHAR = ";,/?:@&=+$ ";
    // URLエンコードされたUTF-8文字列表現の桁数とバイト数の対応テーブル
    // encodeURI("あ") → "%E3%81%82" (9桁) → 3バイト
    var ESCAPEDLEN_TABLE = [ 0, 1, 1, 1, 2, 3, 2, 3, 4, 3 ];
    var size = 0;
    if (str == null || str == "") {
        return size;
    }
    for (var i=0; i<str.length; i++) {
        var c = str.charAt(i);
        if (ESCAPECHAR.indexOf(c) >= 0) {
            size++;
        } else {
            size += ESCAPEDLEN_TABLE[encodeURI(c).length];
        }
    }
    return size;
}