为什么 Whatsapp & Javascript return 相同 unicode 字符串的长度不同?
Why Whatsapp & Javascript return different length of same unicode string?
有问题的 unicode 字符串:
ਪਹਿਲਾਂ ਲੋਕਾਂ ਦੇ ਦਿਲਾਂ ਦਿਮਾਗ਼ਾਂ ਚੋਂ ਇਹ ਵਹਿਮ ਕੱਢੋ ਕਿ
ਅਸੀਂ ਹਿੰਦੂ ਹਾਂ,
ਅਸੀਂ ਸਿੱਖ ਹਾਂ,
ਅਸੀਂ ਮੁਸਲਮਾਨ ਹਾਂ,
ਅਸਲੀਅਤ ਇਹ ਹੈ ਕਿ
ਅਸੀਂ ਭੁੱਖੇ ਹਾਂ,
ਅਸੀਂ ਬੇਰੁਜ਼ਗਾਰ ਹਾਂ,
ਅਸੀਂ ਨਸ਼ੇੜੀ ਹਾਂ,
ਅਸੀਂ ਲਾਚਾਰ ਹਾਂ,
ਅਸੀਂ ਬੇਵਕੂਫ਼ ਹਾਂ,
ਅਸੀਂ ਬੀਮਾਰ ਹਾਂ,
语言:旁遮普语
格式:Unicode
问题:
Javascript 报告其 str.length() =
226;而 WhatsApp 说 700 Characters
.
Javascript代码:
console.log(inputStr.length);
Whatsapp 截图 01:
很好,没有错误:(计数为 698 或 699)
只需从移动键盘添加一个新行即可超过 700
- 为什么字符串长度有很大的不匹配?
- 哪个数字是真实的?
- 如何在 Javascript 中获得与 Whatsapp 结果相同的结果?
这似乎是 Whatsapp 的一个错误。如果你尝试输入带有换行符的文本,你会发现在第 15 行会出现超过 700 个字符的错误,无论当前字符数是多少。
如果您尝试输入没有换行符的字符串,它将起作用并且不会显示超出 700 个字符的消息(如下图所示)
正确的长度是 javascript 字符串长度,即 226。
Your text without newlines
这可能是因为 'length' 的计算方式。与任何其他 'foreign' 语言一样,旁遮普语基于 unicode。并且unicode没有存储字符的固定长度。 unicode 字符的长度从 1 个字节到 4 个字节不等。因此,例如,字符“ਕਿ”看起来是单个字符,但它可能需要 4 个字节。
查看 this post 了解更多详情。
有问题的 unicode 字符串:
ਪਹਿਲਾਂ ਲੋਕਾਂ ਦੇ ਦਿਲਾਂ ਦਿਮਾਗ਼ਾਂ ਚੋਂ ਇਹ ਵਹਿਮ ਕੱਢੋ ਕਿ
ਅਸੀਂ ਹਿੰਦੂ ਹਾਂ,
ਅਸੀਂ ਸਿੱਖ ਹਾਂ,
ਅਸੀਂ ਮੁਸਲਮਾਨ ਹਾਂ,
ਅਸਲੀਅਤ ਇਹ ਹੈ ਕਿ
ਅਸੀਂ ਭੁੱਖੇ ਹਾਂ,
ਅਸੀਂ ਬੇਰੁਜ਼ਗਾਰ ਹਾਂ,
ਅਸੀਂ ਨਸ਼ੇੜੀ ਹਾਂ,
ਅਸੀਂ ਲਾਚਾਰ ਹਾਂ,
ਅਸੀਂ ਬੇਵਕੂਫ਼ ਹਾਂ,
ਅਸੀਂ ਬੀਮਾਰ ਹਾਂ,
语言:旁遮普语
格式:Unicode
问题:
Javascript 报告其 str.length() =
226;而 WhatsApp 说 700 Characters
.
Javascript代码:
console.log(inputStr.length);
Whatsapp 截图 01:
很好,没有错误:(计数为 698 或 699)
只需从移动键盘添加一个新行即可超过 700
- 为什么字符串长度有很大的不匹配?
- 哪个数字是真实的?
- 如何在 Javascript 中获得与 Whatsapp 结果相同的结果?
这似乎是 Whatsapp 的一个错误。如果你尝试输入带有换行符的文本,你会发现在第 15 行会出现超过 700 个字符的错误,无论当前字符数是多少。
如果您尝试输入没有换行符的字符串,它将起作用并且不会显示超出 700 个字符的消息(如下图所示)
正确的长度是 javascript 字符串长度,即 226。
Your text without newlines
这可能是因为 'length' 的计算方式。与任何其他 'foreign' 语言一样,旁遮普语基于 unicode。并且unicode没有存储字符的固定长度。 unicode 字符的长度从 1 个字节到 4 个字节不等。因此,例如,字符“ਕਿ”看起来是单个字符,但它可能需要 4 个字节。
查看 this post 了解更多详情。