iOS的emoji表情在数据库不支持UTF-8格式的处理

本文讲述了在苹果设备上,由于emoji表情的UTF-8编码与GBK编码的数据库不兼容导致的乱码问题。文章介绍了如何从文本中提取emoji表情,以及将emoji转化为实体字符的方法,但指出并非所有emoji都能通过实体字符方式支持。作者呼吁分享更好的解决方案,共同进步。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

最近遇到苹果手机自带的emoji表情的处理问题,由于我们的数据库编码是GBK编码,而苹果的键盘自带的emoji表情,苹果系统的编码格式是UTF8编码,所以在把emoji表情存到GBK编码的数据库的就会出现乱码的现象,这事非常坑爹的事情。但是还有更坑的,由于我们的emoji表情不是有我们客户端来处理的,其实要是我们客户端处理的话很简单,就是把emoji表情处理成相应的唯一字符串,然后存进数据库,字符串GBK编码的数据库肯定可以存。然后我们展示的再处理回来就好,完全我们客户端就可以操作。坑爹的就是,我们传的emoji表情是要给html5去展示,这就存在问题了。


1.如何从一段文字提取emoji表情

下面我给出一个方案,我们知道emoji表情本质就是字符串,是字符串就会有长度,而emoji表情的字符串的长度有2,4,7,3等等,未来随着emoji表情的扩充可能说不定一个emoji表情的长度大于10都有可能,所以我们来遍历一段含有emoji表情的字符串的问题,来检查出有没有emoji表情是很不理想的选择,虽然可能for循环遍历也可能弄出来,但这可能需要花费大量的时间和精力去完成,不过所幸的是,苹果给我们用了一个好的遍历的方法


检测表情的输入
- (NSString *)stringContainsEmoji:(NSString *)string
{
    __block BOOL returnValue = NO;
    __block NSString *tempStr = @"";
    [string enumerateSubstringsInRange:NSMakeRange(0, [string length])
                               options:NSStringEnumerationByComposedCharacterSequences
                            usingBlock:^(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop) {
                                NSString *tempEmoji = 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值