Javascript 如何从字符串中删除UTF16字符?
我有一个包含特殊字符的字符串,如: HelloUTF-16和UTF-8“包含”相同数量的“字符”(确切地说:由于David Haim,可能代表一个字符的代码点),唯一的区别是它们如何编码为字节Javascript 如何从字符串中删除UTF16字符?,javascript,c#,Javascript,C#,我有一个包含特殊字符的字符串,如: HelloUTF-16和UTF-8“包含”相同数量的“字符”(确切地说:由于David Haim,可能代表一个字符的代码点),唯一的区别是它们如何编码为字节 在您的示例“我找到了问题的解决方案,它并没有涵盖所有utf-16字符,但删除了其中许多字符: var title = title.replace(/([\uE000-\uF8FF]|\uD83C[\uDF00-\uDFFF]|\uD83D[\uDC00-\uDDFF])/g, '*'); 在这里,我将
在您的示例“我找到了问题的解决方案,它并没有涵盖所有utf-16字符,但删除了其中许多字符:
var title =
title.replace(/([\uE000-\uF8FF]|\uD83C[\uDF00-\uDFFF]|\uD83D[\uDC00-\uDDFF])/g, '*');
在这里,我将所有特殊字符替换为一个“星”*
。您还可以放置一个空字符串'
,以删除它们
字符串末尾的
/g
的意思是删除所有出现的这些特殊字符,因为如果没有它,string.replace(…)可能只会删除第一个字符。嗯,“UTF-8是一种字符编码,能够对Unicode定义的所有可能字符或代码点进行编码-那么一个字符怎么可能是“UTF16字符”而不是“UTF8字符”??你的榜样“唯一的区别是它们序列化时占用的字节数,但在javascript和C#中,一个字符在字符串上仅为一个字符。@piet.t在这里,它可以是两个UTF8字符,因为UTF16包含的UTF8字符多于UTF8字符。我看到了您的问题,它实际上与UTF8无关。该字符是UTF16代理项对。实际上不知道如何摆脱它们,也不知道你为什么想要它们。如果字体支持UTF,任何正确支持UTF的系统都应该能够呈现UTF。问题是,为什么您会关心“明显”字符的确切计数?它们包含相同数量的代码点,而不是相同数量的字符characters@DavidHaim谢谢你的更正-我试图澄清它。