【避坑指“难”】unicode的那些坑:将emoji编码为unicode

333 阅读1分钟

问题描述:

例如贴吧、微博、论坛等有发帖和评论的功能,android、ios、前端需要对用户输入的emoji表情进行编码后存入数据库,保持三端统一,在内容显示上保持同步。

解决方案:

可以使用 unescape()escape() 编码的字符串进行解码。

1、前端拿到数据后,通过unescape()对unicode进行解码,可以正常显示emoji表情 在这里插入图片描述 2、前端提交数据时,需要把emoji编码传回给数据库 在这里插入图片描述 在这个一来一回的过程中,发现编码后的格式会出现误差,需要把符号替换成unicode格式 在这里插入图片描述 这样看似解决了问题,实际上前面还存在一个天坑等着你

天坑就是:escape()对特殊字符编码的问题,该方法不会对 ASCII 字母和数字进行编码,也不会对下面这些 ASCII 标点符号进行编码: * @ - _ + . / 。其他所有的字符都会被转义序列替换。

升级版解决方案来了,既然escape()不能处理上述的特殊字符,一不做二不休,直接不处理,仅仅只用escape()编码emoji,过滤掉所有中文。

在这里插入图片描述 android、ios、前端都笑了