javascript - 在不弄乱 UTF-8 字符串的情况下获取子字符串

标签 javascript unicode utf-8

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

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

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

还是使用split更好?

最佳答案

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

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

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

关于javascript - 在不弄乱 UTF-8 字符串的情况下获取子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16738570/

相关文章:

mysql - Perl 字符串操作和 utf8/unicode

javascript - 为什么JS类里面声明的变量是 `undefined`

javascript - Firefox 的全局热键

javascript - Socket.io 发送消息两次(或更多)

c++ - 写入 C :\Program Files 中包含的文件夹的文件名

java - 无法在我的 servlet 中解码西里尔字符串

javascript - 如何一次在 Javascript Map 中设置多个值?

java - iText 中的高棉语 Unicode

c++ - std::string、wstring、u16/32string 说明

http - Content-Type...charset=X 和 Content-Encoding=X 有什么区别?