【发布时间】:2013-12-24 12:09:56
【问题描述】:
我正在尝试解析推文,以便在主题标签、提及等上添加链接。但是,当推文包含特殊字符(如“????”)时,此字符计为 2,例如:
console.log("it was fantastic. Thanks a lot guys ????".length);
此行返回 38,而不是 37。因此,当我使用 twitter api 实体中的“索引”时,一切都发生了变化。
有什么办法可以避免这种情况吗?
提前致谢!
【问题讨论】:
-
编码可能以 UTF-8 的形式出现,并且控制台字体无法显示该字符。尝试以支持这些特殊字符的字体在屏幕上显示它。
-
@r3mus:问题是关于字符索引和字符串长度,而不是它的显示表示
-
字符串长度与字符串中的字符有关。那将是一个多字节字符,虽然显示为 1,但占用了 2 的长度。除非我对“多字节字符是位表示适合多个字节的字符”这句话有很大误解。
-
嘿,或者看:stackoverflow.com/questions/2848462/…——尤其是@Tgr的回答
-
function (a,c){c||(c={short_url_length:22,short_url_length_https:23});var d=b.txt.getUnicodeTextLength(a),e=b.txt.extractUrlsWithIndices(a);b.txt.modifyIndicesFromUTF16ToUnicode(a,e);for(var f=0;f<e.length;f++)d+=e[f].indices[0]-e[f].indices[1],e[f].url.toLowerCase().match(b.txt.regexen.urlHasHttps)?d+=c.short_url_length_https:d+=c.short_url_length;return d}--- 这是来自推特的代码。太无聊了,不想走远了
标签: javascript node.js twitter