Angularjs 表情符号和其他unicode字符在图形中显示不正确

Angularjs 表情符号和其他unicode字符在图形中显示不正确,angularjs,unicode,emoji,Angularjs,Unicode,Emoji,例如,我有一个使用Twitter消息的web应用程序 JSON提要用于构建消息列表,但是 注意:这篇文章在Chrome上不显示,因为它不支持表情符号 看起来Angular的$sanitize服务试图将字符转换为其等效的HTML实体。但是,对于某些单个表情符号,它将其拆分为2个。如图所示 $scope.sanitizedText=$sanitize(“我发现上面的正则表达式在一些URL(如bit.yl短链接)上被破坏,因此我修改了我在某处找到的另一个示例: <p ng-bind-html="

例如,我有一个使用Twitter消息的web应用程序

JSON提要用于构建消息列表,但是 注意:这篇文章在Chrome上不显示,因为它不支持表情符号

看起来Angular的
$sanitize
服务试图将字符转换为其等效的HTML实体。但是,对于某些单个表情符号,它将其拆分为2个。如图所示


$scope.sanitizedText=$sanitize(“我发现上面的正则表达式在一些URL(如bit.yl短链接)上被破坏,因此我修改了我在某处找到的另一个示例:

<p ng-bind-html="tweet.text | parseUrl"></p>
twitterApp.filter('parseUrl',函数($sce){
var urlPattern=/(http | ftp | https):\/\/[\w-]+(\.[\w-]+)+([\w,@?^=%&;:\/~+-]*[\w@?^=%&;/~+-])/gi;
返回函数(文本){
angular.forEach(text.match(urlPattern),函数(url){
text=text.replace(url,“”);
});
返回$sce.trustAsHtml(文本);
};
});
用法:


显然,
$sanitize
已损坏。这些引用将解码为为“代理项对”保留的代码点UTF-16的机制;有人迭代UTF-16代码单元而不是实际的代码点,从而破坏了BMP之外的一切。Way to go library作者。Alex,我昨晚发现了这一点,它很有效。你的答案是正确的!我还下载了一个字体,以提供对表情符号的一致处理,并添加了这一点。我将参考它我的问题,看看这个
<p ng-bind-html="tweet.text | parseUrl"></p>