我想使用 Javascript 对字符串进行一些字节检查,为此我有以下代码:
const byteSize = str => new Blob([str]).size;
这东西对我有用。 例如
byteSize("Susan 002 UK ACM Testing 😊")
这个返回 29 字节给我。
现在在服务器端,我使用 Oracle 的
lengthB
函数,它为同一字符串返回 31 个字节。
不确定 Oracle 内部如何计算它,但我需要对 Javascript 代码进行一些修改,以便它始终返回与 Oracle 相同的值。
字节大小差异的原因是因为 JavaScript 代码使用 UTF-8 编码,而 Oracle 的 lengthB 函数可能使用 UCS-2 或 UTF-16。
试试这个:
const str = "Susan 002 UK ACM Testing 😊";
const byteSize = str.encode('ucs-2').byteLength;
console.log(byteSize); // Output: 31