Emoji表情转为自定义标签格式,Unicode编码等

本文介绍了如何处理Emoji表情在数据库中出现乱码的问题,提供了两种解决方案:正则表达式替换和基于表情对照表的方法。推荐了一个官方的emoji数据源,并详细解释了一种基于表情对照表的算法,将表情转换为Unicode编码,适用于不同格式的存储需求。
摘要由CSDN通过智能技术生成

Emoji表情转为自定义标签格式,Unicode编码等

https://github.com/ChurchTao/emoji-js  先上源代码,有问题提个issue ,有用的点个star~

相信大家都遇见过emoji表情存入数据库时,这样那样的乱码,或者别的问题,归根揭底 emoji表情大多数为4字节或者大于4字节,而我们常见的utf-8 或者 gbk格式的数据库,总是不能放入这个长度的字符,变成两个乱码字符。

这时候很多朋友就会说了,数据库改成utf8mb64不就行了吗~

哈哈哈,是的,这确实可以解决问题,但是你要知道  真正生产环境当中 海量庞大的数据库你说改就改吗。没那么容易的,骚年

 

所以我们提出,把👿emoji表情转成 2字节长度的编码字符,也就可以存了,无论是 :smile 、1f422 、/笑脸 都行

 

我大致提出两个思路

1. 正则表达式替换优点(速度快,代码量少) 缺点(可读性差,不易于维护)

2. 基于表情对照表优点(可读性好,对照表维护起来简单) 缺点(速度不够快,代码量多,且运行时内存占用多)

 

很好理解,正则替换就是, 一大串正则,然后替换就行了,此处替换为Unicode编码

// 正则来源来自 https://www.npmjs.com/package/emoji-regex
var reg = /(?:(?:\u2658|\u2634|\u266C|\u263E|\u2624|\u2643|\u2607|\u260F|\u2625|\u266A|\u2647|\u261B|\u260C|\u2627|\u2605|\u265A|\u265E|\u2612|\u266F|\u265C|\u261A|\u260B|\u2644|\u2636|\u2667|\u2766|\u263C|\u2657|\u263D|\u260D|\u2641|\u2621|\u2637|\u2630|\u266B|\u2632|\u262D|\u2659|\u266D|\u2655|\u2654|\u2610|\u2613|\u265B|\u2628|\u2633|\u263B|\u2645|\u2664|\u2635|\u2629|\u260A|\u2661|\u2608|\u262B|\u2767|\u266E|\u270E|\u2765|\u2609|\u2662|\u265D|\u00A9|\u00AE|\u2122|\u20BF|\uD83D\uDD6C|\uD83D\uDDD4|\uD83D\uDDEB|\uD83D\uDDEE|\uD83D\uDDC9|\uD83D\uDDE0|\uD83D\uDDA2|\uD83D\uDDC0|\uD83D\uDDEA|\uD83D\uDD88|\uD83D\uDD48|\uD83D\uDDEC|\uD83D\uDD80|\uD83D\uDD97|\uD83D\uDEC6|\uD83D\uDD9F|\uD83D\uDDF2|\uD83D\uDD6B|\uD83D\uDDAF|\uD83D\uDD47|\uD83D\uDD6A|\uD83D\uDDC5|\uD83D\uDDB0|\uD83C\uDF22|\uD83D\uDDE9|\uD83D\uDDF4|\uD83D\uDD3F|\uD83D\uDDF0|\uD83D\uDD71|\uD83C\uDF98|\uD83D\uDDF6|\uD83D\uDDBD|\uD83D\uDDE4|\uD83D\uDDBF|\uD83D\uDDBB|\uD83D\uDDD5|\uD83D\uDD7C|\uD83D\uDEE8|\uD83C\uDF9D|\uD83D\uDD3E|\uD83D\uDD98|\uD83D\uDDA0|\uD83D\uDD8E|\uD83D\uDD69|\uD83D\uDDAB|\uD83D\uDDAC|\uD83D\uDDD8|\uD83D\uDDB8|\uD83D\uDEE6|\uD83D\uDDA1|\uD83D\uDD9C|\uD83D\uDDB7|\uD83D\uDEC9|\uD83C\uDFF2|\uD83D\uDEF1|\uD83D\uDD68|\uD83D\uDDC1|\uD83D\uDDC8|\uD83D\uDDCC|\uD83D\uDDE2|\uD83D\uDDB3|\uD83C\uDF95|\uD83D\uDD45|\uD83D\uDDD7|\uD83D\uDDDA|\uD83D\uDDF1|\uD83D\uDDCB|\uD83D\uDD9E|\uD83D\uDD6D|\uD83D\uDDD9|\uD83D\uDDF9|\uD83D\uDDB5|\uD83D\uDDD0|\uD83D\uDEEA|\uD83D\uDD8F|\uD83D\uDD99|\uD83D\uDDE7|\uD83C\uDF94|\uD83C\uDF23|\uD83D\uDD89|\uD83D\uDDB9|\uD83D\uDDE6|\uD83D\uDDA7|\uD83D\uDD9B|\uD83D\uDDAA|\uD83D\uDEE7|\uD83D\uDD9A|\uD83D\uDDAE|\uD83D\uDD86|\uD83D\uDDF8|\uD83D\uDDA6|\uD83C\uDF9C|\uD83D\uDDC7|\uD83D\uDEC8|\uD83D\uDDF5|\uD83D\uDD83|\uD83D\uDDBE|\uD83D\uDEC7|\uD83D\uDDBA|\uD83D\uDD93|\uD83D\uDECA|\uD83D\uDD7B|\uD83C\uDFF1|\uD83D\uDD44|\uD83D\uDD7E|\uD83D\uDD84|\uD83D\uDD9D|\uD83D\uDD92|\uD83D\uDD72|\uD83D\uDDC6|\uD83C\uDFF6|\uD83D\uDD85|\uD83D\uDDCD|\uD83D\uDDDF|\uD83D\uDDD6|\uD83D\uDDDB|\uD83D\uDDA9|\uD83D\uDD7D|\uD83D\uDDB4|\uD83D\uDD7F|\uD83D\uDD82|\uD83D\uDDE5|\uD83D\uDD91|\uD83D\uDCFE|\uD83D\uDD6E|\uD83D\uDDA3|\uD83D\uDEF2|\uD83D\uDDB6|\uD83D\uDDCE|\uD83D\uDD94|\uD83D\uDDCA|\uD83D\uDD46|\uD83D\uDDF7|\uD83D\uDDED|\uD83D\uDDAD|\uD83D\uDDCF|\uD83D\uDD81|\uD83D\uDD40|\uD83D\uDD42|\uD83D\uDD41|\uD83D\uDD43|\u26E5|\u26E2|\u26E4|\u26E6|\u26E7|\u26FB|\u26FE|\u26DA|\u26C6|\u26D9|\u26D5|\u26BF|\u26D2|\u26C9|\u26CA|\u26EB|\u26D8|\u26DB|\u26D6|\u26EE|\u26EC|\u26E8|\u269E|\u26FF|\u26DC|\u26D7|\u26E3|\u26CB|\u26DD|\u26DF|\u26D0|\u26EF|\u26FC|\u26CC|\u26F6|\u26CD|\u26E1|\u26E0|\u26DE|\u26C7|\u26ED|\u269F|\uD83C\uDC26|\uD83C\uDC1C|\uD83C\uDC13|\u26B4|\uD83C\uDC1A|\u26B6|\uD83C\uDC29|\uD83C\uDC1D|\uD83C\uDC06|\uD83C\uDC10|\uD83C\uDC0B|\uD83C\uDC28|\uD83C\uDC09|\uD83C\uDC00|\uD83C\uDC02|\uD83C\uDC16|\uD83C\uDC05|\uD83C\uDC17|\uD83C\uDC22|\u26C2|\u26C3|\uD83C\uDC0A|\uD83C\uDC20|\uD83C\uDC24|\u26BC|\uD83C\uDC1B|\uD83C\uDC11|\uD83C\uDC08|\u269D|\uD83C\uDC14|\uD83C\uDC0E|\u26BB|\uD83C\uDC21|\u26C1|\uD83C\uDC2B|\u26B9|\uD83C\uDC15|\uD83C\uDC18|\uD83C\uDC19|\u26B8|\uD83C\uDC0F|\uD83C\uDC23|\u26C0|\u26B7|\uD83C\uDC2A|\uD83C\uDC0D|\u26B5|\uD83C\uDC12|\u26BA|\uD83C\uDC1E|\u07F
  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值