• 存储一个emoji表情,为什么有时候占用两个字符?


    前言

    这个问题来自开发一个系统测试提出的bug,某个字段限制只能传输50个字符,测试输入emoji表情,只输入了26个时保存就会报超长。

    分析

    Spring开发的程序,用@Length做的限制,总不会是框架的bug?
    于是调试测试了一下,只传一个表情字符进来,代码接收到的字符串长度,竟然是2.

    调试用的是飞机的表情字符✈️,后端在ide里调试时,现实的两个字符,第一个时飞机没错,第二个是一个不能显示的字符,十六进制'FE0F',这是什么?

    Variation Selector-16

    搜索了一下,发现emoji除了定义了表情字符,还定义了一个控制前一个表情字符如何展示的特殊字符叫'Variation Selector-16',具体介绍链接在这里

    简单来说,emoji字符串的展示方式,有字符方式和emoji方式两种,我的理解是emoji展示的效果更好。而有的字符,在emoji定义中,默认是用字符方式展示。

    比如上面的飞机字符,unicode编码'U+2708',默认是'✈',而如果在这个字符后面紧跟着'U+FE0F'这个控制字符,则展示效果会变成✈️(具体展示效果取决于不同的浏览器)。

    结论

    部分emoji字符,通过输入法打出来的虽然是一个表情符号,但是由于后面跟了'Variation Selector-16',会占用两个字符。

  • 相关阅读:
    系统生命周期
    系统分析师教程——目录
    企业信息系统——SCM
    企业信息系统——CRM
    .NET 解决方案 核心库整理
    .NET 人工智能相关资料整理
    Task
    正则表达式摘录
    记一次IOS对 JS的支持问题
    JavaScript回顾一下js的基础知识,以及学习一下在项目中了解到的新知识
  • 原文地址:https://www.cnblogs.com/mosakashaka/p/16252038.html
Copyright © 2020-2023  润新知