获取子字符串而不会弄乱UTF-8字符串

时间:2013-05-24 15:29:13

标签: javascript unicode utf-8

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

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

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

或者使用split更好吗?

2 个答案:

答案 0 :(得分:5)

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

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

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

答案 1 :(得分:0)

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