編集:おっと。
console.log (Buffer.byteLength ("", "utf8")); //--> 3
文字のバイト数を数えたい。これは私が持っているものです:
var charBytesLength = function (c){
var n = 0;
c = c.charCodeAt (0);
do{
c = c >>> 8;
n++;
}while (c);
return n;
};
文字が UTF8 を使用してエンコードされている場合、2 バイトを超える文字の場合、関数は常に 2 を返します。これは、Javascript では文字は 16 ビット値でありcharCodeAt()
、0 から 65535 までの値のみを返すためです。
例えば:
"".charCodeAt (0)
実際の 16 進数値が 0x24065 (10 進数で 147557) の場合、65533 を返します。
実際のバイト数を数える方法を知っていますか?