slightly related - quick way to get the number of bytes in a string in javascript when the string is encoded in utf8:
var utf8_length = encodeURIComponent(data).replace(/%../g, 'x').length;
var utf8_length = encodeURIComponent(data).replace(/%../g, 'x').length;
var len = Buffer.byteLength(a_string, 'utf8')% signs are handled fine - they get encoded into %25 which then gets shortened to a single 'x' character - thus counted as a single byte.
Similarly, for example € gets encoded to "%E2%82%AC" which then gets correctly counted as 3 bytes.
I'm not quite sure what value of 'broken' you're thinking of? Did you try this and find it didn't work in some particular circumstance?
firebug works pretty well for testing out code snippets.
The internet is full of enough incorrect information regarding javascript as it is, and if you think about it, % has to be encoded, otherwise anything containing a % would be decoded wrongly ;)