7

我有一个来自 ajax 响应的 UTF-8 编码字符串,我想获取该字符串的子字符串直到第一个逗号。对于字符串"Привет, мир",它将是"Привет".

这会起作用并且不会遇到“多字节”问题吗?

var i = text.indexOf(',');
if (i != -1) text = text.substr(0, i);

还是更好用split

4

2 回答 2

5

Javascript 按字符而不是字节来处理字符串。
因此,是的,从编码/字符串处理的角度来看,这很好。
您可以将 Javascript 中的字符串视为没有任何特定编码,而是视为字符串

> "漢字".substr(1)
  "字"

请注意,以上只是一个简化。正如评论中所指出的,Javascript 将字符串视为 16 位代码点。这使您可以“按字符”处理大多数常见字符的字符串,但对于在 UTF-16 中使用超过 2 个字节编码的字符或由多个代码点组成的字符,这种抽象会失效。

于 2013-05-24T15:37:03.000 回答
0

UTF-8 仅使用高于 128 的值来编码 ASCII 以外的字符,因此 ASCII 逗号绝不是多字节序列的一部分。

于 2013-05-24T15:37:07.403 回答