emoji处理方式大起底

开源3D激光SLAM算法的异同点、优劣势与适配场景总结 本文对比分析了主流开源3D激光SLAM方案的核心差异与适用场景。LOAM架构简洁但精度较低;LeGO-LOAM轻量化适合地面机器人;LIO-SAM采用因子图优化支持多传感器融合;LVI-SAM通过视觉-激光-惯性三重冗余提升鲁棒性;FAST-LIO系列基于滤波架构实现超高实时性。选型需权衡传感器配置(纯激光/激光+IMU/激光+视觉)、运动状态(高速/常规)、计算资源等因素:资源受限选LeGO-LOAM或Faster-LIO,高速运动选FAST-LIO系列,退化环境选LVI-SAM,全局一致性需求选LIO- 阅读详情

emoji资料

今天研究了emoji,挺有意思,资料挺多,摘要一些信息给大家分享,也算是自己记录学习。

emoji介绍

Emoji (絵文字,词义来自日语えもじ,e-moji,moji在日语中的含义是字符)是一套起源于日本的12x12像素表情符号,由栗田穣崇(Shigetaka Kurit)创作,最早在日本网络及手机用户中流行,自苹果公司发布的iOS 5输入法中加入了emoji后,这种表情符号开始席卷全球,目前emoji已被大多数现代计算机系统所兼容的Unicode编码采纳,普遍应用于各种手机短信和社交网络中。近期,更是有不少网友用emoji图案玩猜字游戏,享受这种表情文化带来的乐趣。

关于emoji的发音:很多人第一眼见到emoji便会下意识将其误读作“一磨叽”,其实不然,emoji音译过来大概读作“诶磨叽”,当中“e”的发音颇似字母abc的a的发音。

最初日本的三大电信运营商各自有不同的字符定义,分别是DoCoMo、KDDI和Softbank。随着iOS内置了Softbank的版本,emoji在全球范围内风靡(iOS5版本以前)。而Google又自己定义了一套emoji字符。iOS5以后,apple采用了unicode定义的emoji字符(iOS5版本以后)。

unicode定义的emoji是四个字符,softbank为3个字符,emoji的四个字符从存储到展示对应没有做过考虑的系统来说,简直就是灾难。

面临问题:

插入Emoji表情,保存到数据库时报错:

SQLException: Incorrect string value: '\xF0\x9F\x98\x84' for column 'review' at row 1

UTF-8编码有可能是两个、三个、四个字节。Emoji表情是4个字节,而Mysql的utf8编码最多3个字节,所以数据插不进去。

解决方案:过滤解决

把emoji直接过滤掉,简单方便有效。虽然损失了几个emoji字符,但强过不至于导致整条记录丢失。

public static String removeNonBmpUnicode(String str) {  
   if (str == null) {  
       return null;  
   }  
   str = str.replaceAll("[^\\u0000-\\uFFFF]", "");  
  return str;  
}  
这种方案能预防能解决问题,并且还能是程序更加健壮,但是从用户体验上来说并不好,用户发的emoji表情丢了,看下面的解决方案。

解决方案:将Mysql的编码从utf8转换成utf8mb4。

从 MySQL 5.5.3 开始,MySQL 支持一种 utf8mb4 的字符集,这个字符集能够支持 4 字节的 UTF8 编码的字符。 utf8mb4 字符集能够完美地向下兼容 utf8 字符串。在数据存储方面,当一个普通中文字符存入数据库时仍然占用 3 个字节,在存入一个 Unified Emoji 表情的时候,它会自动占用 4 个字节。所以在输入输出时都不会存在乱码的问题了。

要使用 MySQL 的这个特性,首先需要把 MySQL 升级到 5.5.3 以上的版本。

其次,需要修改数据结构中的字符集为 utf8mb4 ,如 utf8mb4_general_ci 。由于 utf8mb4 是 utf8 的超集,从 utf8 升级到 utf8mb4 不会有任何问题,直接升级即可;如果从别的字符集如 gb2312 或者 gbk 转化而来,一定要先备份数据库。

然后,修改 MySQL 的配置文件 /etc/my.cnf,修改连接默认字符集为 utf8mb4 ,如果是自己写的 PHP 脚本,也可以在连接数据库以后首先执行一句 SQL: SET NAMES utf8mb4;。这时候,PHP 应该就可以正常保存 Emoji 到数据库了。

这种方式可能带来的问题:

存储:在数据表中,对于变长的字段(如VARCHAR2,TEXT),utf8mb4最大可存储的字符可能少于utf8系列的collation;在索引中,对于文本类型的字段,utf8mb4可索引的字符少于utf8系列的collations。如InnoDB的索引最多使用767字节。如果使用utf8mb4,每一个字符都会预留4字节做索引,而utf8则预留3字节。故此前者是191个字符,后者是255个字符。。

性能:由于以上原因,加上字符集大,utf8mb4的性能可能比utf8系列的collations低,可以参考stackoverfolow上的一个测试结果:http://stackoverflow.com/questions/766809/whats-the-difference-between-utf8-general-ci-and-utf8-unicode-ci,差异不是特别大。

运维:如果一个大的环境内,如果其他的数据库都是utf8模式,把其中某个库设置为utf8mb4模式,在后续交接运维可能会造成问题,遗留下坑。

上下游:数据库支持unicode的emoji存储,上下游不一定支持。比如mysql客户端驱动(低版本的jdbc就不行)可能不支持utf8mb4,或者DDL的中间件不支持utf8mb4。web端处理utf8mb4字符展示,这些都有可能影响emoji的存储活着展示。

从上面的信息,从数据库层面如果不是特别看重存储,性能,运维并能解决上下游的问题,数据库是完全可以支持emoji的,但是有个新问题没有解决,emoji在iOS上展示OK,andriod设备如何展示emoji表情?

解决方案:转义解决

1:unicode emoji转softbank的emoji。

我们知道unicode emoji是4个字节,softbank定义的emoji占用3个字节存储,通过emoji for php http://code.iamcal.com/php/emoji/,我们可以把unicode的emoji方式转换为softbank方式,从而实现不修改数据库,就能存储emoji,相对于数据库层面的解决问题的方式,动作要小的多,并且也不会有性能,运维等方面的问题。但是有个不可避免的问题是,Softbank方式已经不再维护,所以新增加的emoji表情,Softbank中都没有,会造成部分emoji表情丢失的情况。

2:ubb

UBB代码是HTML(标准通用标记语言下的一个应用)的一个变种,是Ultimate Bulletin Board (国外的一个BBS程序)采用的一种特殊的TAG。您也许已经对它很熟悉了。UBB代码很简单,功能很少,但是由于其Tag语法检查实现非常容易,所以不少网站引入了这种代码,以方便网友使用显示图片/链接/加粗字体等常见功能。

比如emoji的太阳符号,他的unicode emoji编码为U+2600,在存入数据库时,可以把它转换成  UBB 代码 [emoji]2600[/emoji] 保存,读取的时候,可以转换回来。当然针对不同的设备,比如andriod我们可以转义成andriod可以处理的emoji符号。

这种转移,可以很好解决iOS和Andriod显示emoji的问题,但是还存在几个问题。

1:andriod和iOS的emoji并不相同,相同的编码 可能在iOS上是太阳,而在andriod上是阴天,解决这种问题方式最好做下iOS和andriod下的emoji映射,同时可以在web上通过js转义处理。

2:性能,采用转义的方式处理,性能肯定会有所下降,但是可以容忍。

与UBB对应的是html转义,这种方式,其实和ubb有些类似, 使用 HTML转义字符 ☀,结果和性能和UBB差不多,从规范化上来说,ubb方式更好一些。


参考资料

PHP-emoji转换表:http://code.iamcal.com/php/emoji/
unicode Emoji Symbols: http://www.unicode.org/~scherer/emoji4unicode/20091221/utc.html
emoji图标和unicode对应关系:http://www.easyapns.com/iphone-emoji-alerts
谈谈Unicode编码,简要解释UCS、UTF、BMP、BOM等名词:http://www.fmddlmyy.cn/text6.html
emoji在线转换工具:http://unicodey.com/js-emoji/demo.htm
Emoji表情图标在iOS与PHP之间通信及MySQL存储:http://blog.youkuaiyun.com/wildfireli/article/details/9370161
Mysql中校对集utf8_unicode_ci与utf8_general_ci的区别:http://hi.baidu.com/phpkoo/item/38238bd8505899e955347fca,http://stackoverflow.com/questions/766809/whats-the-difference-between-utf8-general-ci-and-utf8-unicode-ci
Mysql排序规则utf8_unicode_ci与utf8_general_ci的区别:http://justdo2008.iteye.com/blog/2162842
Unicode Character Sets:http://dev.mysql.com/doc/refman/5.0/en/charset-unicode-sets.html
MySQL设置utf8mb4编码:http://www.linuxidc.com/Linux/2014-07/104231.htm|
andriod支持emoji解决方案:http://blog.youkuaiyun.com/waylife/article/details/11095113
Supporting New Emojis on iOS 6:http://blog.manbolo.com/2012/10/29/supporting-new-emojis-on-ios-6
让MySql支持Emoji表情(MySQL中4字节utf8字符保存方法):http://www.w2bc.com/Article/8533
如何处理emoji等4字节的Unicode字符:http://zhidao.baidu.com/link?url=z6PW1ya6plRBgFN7M2zdVLXUnmxYcH2_VYK8nW9Yi9-kh2estgmJomw1LssmsA853WYHsRtulkJn2okq0a3TAUDQHIiMe7b0VS-FeGMNYUu
suppoting new emoji for ios6:http://blog.manbolo.com/2012/10/29/supporting-new-emojis-on-ios-6 
UTF-8格式emoji:http://punchdrunker.github.io/iOSEmoji/table_html/ios6/index.html 

C语言试题三之计算并输出 s=1+(1+2^(0.5))+(1+2^(0.5)+3^(0.5))+…+(1+2^(0.5)+3^(0.5)+…+n^(0.5)) 1 、题目 计算并输出 s=1+(1+2^(0.5))+(1+2^(0.5)+3^(0.5))+…+(1+2^(0.5)+3^(0.5)+…+n^(0.5)) 2、部分函数说明 C 库函数 double pow(double x, double y) 返回 x 的 y 次幂。 3、源代码实现 #include <stdio.h> #include <... 阅读详情

相关推荐

Jetson平台XDMA PCIe驱动安装与测试全指南

本文提供了一份在NVIDIA Jetson平台上安装与测试Xilinx FPGA XDMA PCIe驱动的完整指南。详细阐述了驱动作为高速DMA引擎的核心作用,并逐步讲解了从环境准备、驱动编译、内核模块加载到实际数据传输测试的全过程。内容涵盖常见问题排查与性能优化建议,帮助开发者实现Jetson与FPGA间的高速数据通信,适用于自动驾驶、工业视觉等需要异构计算的应用场景。

weixin_29196315的博客 526

Emoji 简介------阮老师的最新力作

转载地址:http://www.ruanyifeng.com/blog/2017/04/emoji.html?20170414095354 作者: 阮一峰 日期: 2017年4月13日 一、含义 Emoji 是可以插入文字的图形符号。 它是一个日语词,e表示"絵",moji表示"文字"。连在一起,就是"絵文字"。 Emoji 在上

认知 行动 坚持 8452

零代码做游戏:AI辅助开发HTML5网页小游戏从创意到发布全流程

在软件开发领域,自然语言编程正成为一种新兴的人机协作方式,而AI辅助开发则是其最典型的落地形态。它让开发者无需精通语法,只需用清晰的语言描述游戏规则与交互逻辑,AI便能自动生成可运行的代码。这种模式大幅降低了编程门槛,尤其适合快速验证创意、制作原型。对于HTML5网页游戏而言,借助AI生成单个HTML文件,配合在线运行环境,即可在浏览器中直接试玩、迭代与分享。无论是产品经理验证玩法、运营人员制作互动小游戏,还是教育者设计课堂闯关,都能通过自然语言描述需求,让AI完成代码实现与报错修复。本文完整记录了一个“接

weixin_31497453的博客 329

浅谈emoji(分析与使用)

有jks或keystore的情况签名apk jarsigner -verbose -keystore D:\xiangzhuamajia.jks -signedjar D:\sign\tap_sign.apk D:\tap_unsign.apk wangzhe 如何签名: jarsgner -verbose -keystore [keystorePath] -singnedjar...

楚人无梦的专栏 3114

从jieba分词到BERT-wwm——中文自然语言处理(NLP)基础分享系列(12)

今天是本系列的最后一期,完整代码呈现Huggingface transformers平台上微调BERT-wwm-ext的过程方法。

weixin_49518391的博客 3763

Palantir解密:从企业数字化能力构成说起,“本体”如何破解现代企业数据应用难题?

抛开技术外壳来看,Palantir“本体”的理念内核其实并不复杂:构建一个统一、可操作的数字现实,以高效驱动决策与行动。其技术实施和产品沉淀的过程诚然是高复杂性、高难度的,但这正体现了Palantir所代表的新硅谷“All in AI+”的战略决心。对于我们而言,必须深刻认识到:企业数字化能力建设既不是高精尖技术的简单堆砌,也不是局部场景的数字化改良,而是一场企业级的“数字孪生”——关乎战略、组织与业务全域的体系能力的重塑。

SZSDQJC的博客 1685

iOS 对于表情符号 emoji被截断问题

首先对于表情的输入,再加上输入框内容的长度截取处理。会遇到表情卡在长度的限制上,截取之后就会完蛋了,出现一个A的标记非法字符的问题。是由于表情的字符长度大于1,截取substringToIndex去的内容截掉了部分表情的问题。 优化处理如下: 1.获取将要截取的位置的字符的长度。拿到这里的限制范围range处理。 nsssting *string = @"

曹世鑫的杂谈 3305

阿里九宫格验证码 (Baxia SecCaptcha) 逆向工程与自动化求解

实现对阿里巴夏 (Baxia) 九宫格点击验证码的全自动求解模式说明依赖浏览器模式通过 Puppeteer/Playwright 控制真实浏览器,享有完整 DOM/Canvas/WASM 环境需要 Chrome/Chromium纯算模式脱离浏览器,通过 HTTP API + Node.js WASM 解密完成求解无需浏览器。

猫敷雪 378

项目总结-EMOJI表情处理详解(ios,android平台兼容)

个人最近在做公司的android项目,里面要对EMOJI表情进行处理,由于ios产品已经上线,而我的android产品才刚刚开始,所以android需要兼容服务器端ios已经提交上去的EMOJI数据(后来者,比较坑呀,希望广大猿友们不要给后来者挖坑呀,做的时候最好考虑下另一个平台的兼容性,我是被坑死了~~)。

pp_hdsny的专栏 3576

使用 Simulink/Simscape Electrical/Stateflow,构建一个并网逆变器短路故障动态响应与恢复策略仿真模型

本文基于Simulink平台,详细介绍了并网逆变器短路故障的动态响应与恢复策略仿真方法。主要内容包括:1)构建包含热模型的高精度逆变器模型;2)模拟IGBT击穿和桥臂直通两种短路故障;3)设计基于Stateflow的微秒级快速保护逻辑;4)实现放电、去磁、自检、重启的完整恢复流程。仿真结果表明,所提出的保护方案能在200μs内有效限制故障电流,避免器件永久损坏,并通过标准化恢复流程实现系统安全重启。文章还探讨了硬件保护协同、多级保护和预测保护等高级策略,为电力电子系统安全防护提供了实用解决方案。

xiaoheshang_123的博客 107

keil内无法打开ccs图形编程,弹框提示:无法加载一下来源的扩展程序:C:\...清单文件缺失或不可读取,如何解决?

🏆本文收录于 《全栈Bug调优(实战版)》 专栏,该专栏专注于分享我在真实项目开发中遇到的各类疑难Bug及其深层成因,并系统提供高效、可复现的解决思路和实操方案。无论你是刚入行的新手开发者,还是拥有多年项目经验的资深工程师,本专栏都将为你提供一条系统化、高质量的问题排查与优化路径,助力你加速成长,攻克技术壁垒,迈向技术价值最大化与职业发展的更高峰🚀!

**My Coding Family** 1377

Emoji处理方式大起底

原文地址:http://blog.youkuaiyun.com/ugg/article/details/44225723 emoji资料 今天研究了emoji,挺有意思,资料挺多,摘要一些信息给大家分享,也算是自己记录学习。 emoji介绍 Emoji (絵文字,词义来自日语えもじ,e-moji,moji在日语中的含义是字符)是一套起源于日本的12x12像素表情符号,由栗田穣崇(Shigetaka

杨春建的博客 1214

(6):单相三绕组变压器的拉氏变换数学模型和仿真模型

本节详细推导了基于耦合电路的单相三绕组变压器考虑铁心损耗情况下的拉普拉斯变换数学模型,并据此用Matlab/Simulink的传递函数模块搭建了相应的仿真模型,仿真结果表明所建立的数学模型和仿真模型都是正确的。本文的贡献是建立了考虑铁心损耗的单相三绕组变压器基于拉氏变换象函数的数学模型,为使用Simulink传递函数模块实现单相三绕组变压器的仿真模型提供了一条途径,所采用的建模方法和技巧具有启发作用,值得借鉴。

weixin_45670943的博客 373

iOS开发emoji处理方式大起底

总结就一点内容:就iOS和Android端来说,不需要任何处理,将emoji字符上传到服务器,需要的时候服务器原样返回就OK,服务器数据库存储做好相应的处理。 原文地址:http://blog.youkuaiyun.com/ugg/article/details/44225723 emoji资料 今天研究了emoji,挺有意思,资料挺多,摘要一些信息给大家分享,也算是自己记录学习。 emoji介绍 ...

allanGold 6477

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

php处理字符中的emoji表情的三种处理方式

php处理字符中的emoji表情的三种处理方式判断字符串中是否含有 emoji 表情三个 PHP 内置函数:mb_strlenmb_substrstrlen移除字符串中的 emoji 表情含有 emoji 表情的字符串在 MySQL 中的储存 判断字符串中是否含有 emoji 表情 utf-8 编码的 emoji 表情或者某些特殊字符占用 4 个字节。utf-8 编码的常用中文字符占用 3 个字节。 三个 PHP 内置函数: mb_strlen 返回具有 encoding 编码的字符串 str 包含的字符数

徊忆羽菲 1613

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

php+mysql存储emoji表情

背景介绍: 使用php+mysql存储app的用户数据,在存储emoji表情时发现存储遇到乱码; 踩坑过程: 1、首先是理解emoji表情:emoji表情详情请百科,实际使用

toolonger的博客 5175

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

客户端提交emoji到服务端,服务端出错的处理方式[转]

emoji资料 今天研究了emoji,挺有意思,资料挺多,摘要一些信息给大家分享,也算是自己记录学习。 emoji介绍 Emoji (絵文字,词义来自日语えもじ,e-moji,moji在日语中的含义是字符)是一套起源于日本的12x12像素表情符号,由栗田穣崇(Shigetaka Kurit)创作,最早在日本网络及手机用户中流行,自苹果公司发布的iOS 5输入法中加入了emoji后,这种表情符

我的苦笑灬尔视而不见的专栏 3453

java emoji显示乱码_Java处理emoji的方式

Java处理emoji的方式问题由来: java后端获取微信小程序用户昵称含emoji时,显示乱码。处理思路过滤是当接收到客户端传过来得数据—->正则判断传过来的字符串中是否包含emoji—->如果包含emoji表情的话就通过正则把emoji表情过滤掉(或者把emoji表情替换成指定字符)—->仅保存过滤emoji表情后的字符串使用 emoji-java. 首先导入依赖包com....

weixin_34000790的博客 1346

新浪微博Emoji表情解析

找了个Chrome的插件 是在新浪微博的表情里加入emoji表情的 然后把这个插件找出来 把里面的emoji部分的数据偷过来转成了js能用的 Chrome插件的地址:http://emoji.sinaapp.com/ JS正则: /[\ue415\ue056\ue057\ue414\ue405\ue106\ue418\ue417\ue40d\ue40a\ue404\ue105\ue409...

weixin_30716141的博客 5660

emoji处理方式

今天有个需求是限制emoji 所以来了解一下 emoji资料今天研究了emoji,挺有意思,资料挺多,摘要一些信息给大家分享,也算是自己记录学习。emoji介绍Emoji (絵文字,词义来自日语えもじ,e-moji,moji在日语中的含义是字符)是一套起源于日本的12x12像素表情符号,由栗田穣崇(Shigetaka Kurit)创作,最早在日本网络及手机用户中流行,自苹果公司发布的iOS 5输入...

weixin_39179428的博客 751

java对Emoji表情的两种处理方式

最近在做一个APP,第三方登录的时候昵称表情存储报错, Caused by: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98...' for column 'nick_name' at row 1 我对数据库的编码,表格的编码,字段的编码,my.ini配置文件都进行了修改,将utf8改成了utf8mb4,还是不行,所...

APM800的博客 4208

Java中的emoji表情

在之前的一篇博文中,我写了之前自己遇到的一个emoji表情显示问题,后来通过转码的方式解决了。不过后来我觉得,自己对这个问题的研究不够深入,于是专门写了这篇文章来记录。

Monten_Cristo的博客 3370

IOS或者Android传递 含有emoji表情的文本到服务器之php处理方式

微信接口中对于emoji表情使用的是UTF-8的二进制字符串,并没有解码,表现就是当收到微信端用户发来的emoji表情时,显示为一个方块型「」或是无法显示的字符,这时就需要对其进行转码。同理在向微信服务器发送带有emojib表情的文本消息时,也需要将表情字符编码为此格式进行发送(早前微信可以直接发送unicode码显示emoji表情,但是现在已经不支持了)。 每个emoji表情其实都有相应的u

敏敏张的博客 6135
上一篇: PHP5.5四种序列化性能对比
下一篇: 使用valgrind的callgrind工具进行多线程性能分析
逸学堂
博客等级 码龄23年 1104粉丝 112原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值