两年后回到这个/另一个话题,我看到人们讨论相同的;我仍然不明白发生了什么事。我不明白字符串到字节方面的计算/ javascript
下面这个SO职位:
String length in bytes in JavaScript
我想了解的JavaScript的这部分!我还有兴趣计算比特币交易的大小,然后将其推送到区块链。但两者中最重要的是我终于明白这些用户在做什么,因为它不止一次出现,我只是不明白!
我已经试过三个概括为答案的功能,但他们似乎都做无非返回string.length减,而我希望他们能够返回不同的值(字符串的以字节为单位的开销/千字节/兆字节)
function byteCount(s) {
return encodeURI(s).split(/%..|./).length - 1;
}
console.log(byteCount('hello'),'hello'.length);//5,5
function getLengthInBytes(str) {
var b = str.match(/[^\x00-\xff]/g);
return (str.length + (!b ? 0: b.length));
}
console.log(getLengthInBytes('hello'),'hello'.length);//5,5
console.log((new TextEncoder('utf-8').encode('hello')).length,'hello'.length);//5,5
这很烦人,这对我来说毫无意义!显然这些人不会谈论如何获得一些他们可以很容易地用string.length 得到的东西,所以他们试图成功返回什么?
字符串应该是二进制吗? (像这样:How to convert text to binary code in JavaScript?)
有一些特殊的字符需要多个字节的空间。试试“Äpfel”。关于UTF的维基百科文章描述了这项工作如何工作 –
Jup我将它写为答案 –
JavaScript使用UCS-2,它是成为Unicode 1.1并且只允许16位(两字节)编码的标准。 Unicode的最新版本实际上可以使用每个字符* 7 *字节。 https://mathiasbynens.be/notes/javascript-unicode –