问题

服务器端不支持Emoji表情,因此客户端在上传用户输入时,不能包含Emoji表情。

解决方案

在客户端发送请求前,判断用户输入中是否含有表情,如果含有表情,则提示用户重新输入。这个过程关键是如何判断字符串中是否含有Emoji表情。要判断是否含有Emoji表情,必须先了解什么是Emoji。

Emoji 是一套起源于日本的12x12像素表情符号,由栗田穣崇(Shigetaka Kurit)创作,最早在日本网络及手机用户中流行,自苹果公司发布的iOS 5输入法中加入了emoji后,这种表情符号开始席卷全球,目前emoji已被大多数现代计算机系统所兼容的Unicode编码采纳,普遍应用于各种手机短信和社交网络中。

以上是摘自百度百科里的一段话,Emoji表情最终会被编码成Unicode,因此,只要知道Emoji表情的Unicode编码的范围,就可以判断用户是否输入了Emoji表情。以下是具体代码,我这里写成了NSString的一个分类

@implementation NSString (Emoji)+ (BOOL)stringContainsEmoji:(NSString *)string
{__block BOOL returnValue = NO;[string enumerateSubstringsInRange:NSMakeRange(0, [string length]) options:NSStringEnumerationByComposedCharacterSequences usingBlock:^(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop) {const unichar hs = [substring characterAtIndex:0];if (0xd800 <= hs && hs <= 0xdbff) {if (substring.length > 1) {const unichar ls = [substring characterAtIndex:1];const int uc = ((hs - 0xd800) * 0x400) + (ls - 0xdc00) + 0x10000;if (0x1d000 <= uc && uc <= 0x1f77f) {returnValue = YES;}}} else if (substring.length > 1) {const unichar ls = [substring characterAtIndex:1];if (ls == 0x20e3) {returnValue = YES;}} else {if (0x2100 <= hs && hs <= 0x27ff) {returnValue = YES;} else if (0x2B05 <= hs && hs <= 0x2b07) {returnValue = YES;} else if (0x2934 <= hs && hs <= 0x2935) {returnValue = YES;} else if (0x3297 <= hs && hs <= 0x3299) {returnValue = YES;} else if (hs == 0xa9 || hs == 0xae || hs == 0x303d || hs == 0x3030 || hs == 0x2b55 || hs == 0x2b1c || hs == 0x2b1b || hs == 0x2b50) {returnValue = YES;}}}];return returnValue;
}

这段代码并非本人原创,也是取自互联网,经测试好使,分享给大家。

iOS中Emoji表情的判断相关推荐

  1. php处理emoji表情方法,PHP实战:3种方法轻松处理php开发中emoji表情的问题

    <PHP实战:3种方法轻松处理php开发中emoji表情的问题>要点: 本文介绍了PHP实战:3种方法轻松处理php开发中emoji表情的问题,希望对您有用.如果有疑问,可以联系我们. 背 ...

  2. MySQL 字符串删除表情符_PHP处理字符中的emoji表情(判断/移除/存储)

    目录判断字符串中是否含有 emoji 表情 移除字符串中的 emoji 表情 含有 emoji 表情的字符串在 MySQL 中的储存 utf-8 编码的 emoji 表情或者某些特殊字符占用 4 个字 ...

  3. iOS禁止输入emoji表情

    因为emoji编码在android或者pc设备没有很好的支持,所以有时候为了禁止emoji表情的输入,因为关闭不了系统emoji的键盘,那只能根据编码把emoji表情过滤掉,写了一个NSString的 ...

  4. mysql 过滤emoji表情_MySQL中emoji表情过滤

    问题描述 最近在对线上排错过程中发现很多入库时产生的错误日志,表现形态如下 Incorrectstringvalue:'\xF0\x9F\x91\x8D\xE6\x94...'forcolumn'co ...

  5. Android IOS风格Emoji表情,简单实用

    相信大家做项目的时候,特别是聊天相关的,一般都需要用到Emoji. 但是Emoji表情在安卓和IOS两个平台上,显示效果是不一样的,如下图: 言归正传,大家都知道,Emoji就是一组Unicode编码 ...

  6. android显示ios emoji表情符号,教程:在 Android 上也能用 iOS 新 Emoji 表情

    那是一个阳光明媚的周末,我惬意的躺在床上用着我的 Android 机刷微博,看着网上那些段子手,心情无比的舒畅.直到我看见这么一条: 瞬间百万头羊驼从我心头奔过,他到底发了些什么!?为什么我看不见!! ...

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

    前言 最近遇到苹果手机自带的emoji表情的处理问题,由于我们的数据库编码是GBK编码,而苹果的键盘自带的emoji表情,苹果系统的编码格式是UTF8编码,所以在把emoji表情存到GBK编码的数据库 ...

  8. php-emoji使用微信,微信开发中emoji表情的问题

    做微信开发的时候就会发现,存储微信昵称必不可少.之前的项目里面微信昵称很多都是空白,后来才知道是因为emoji表情的问题.原来是因为Mysql的utf8字符集是3字节的,而emoji是4字节,这样整个 ...

  9. iOS 过滤emoji表情

    iOS输入框过滤emoji表情 // // ViewController.m // test // // Created by 郭宇 on 13-11-15. // Copyright (c) 201 ...

最新文章

  1. linux查看动态库导出的符号,Linux下控制动态库导出
  2. MATLAB R2014a 中文版下载安装图文教程
  3. OSG使用更新回调来更改模型
  4. WebView::drawExtras
  5. linux环境下远程访问ftp
  6. Java中的properties文件中的key不能使用项目中的接口名和Java文件名
  7. 【Windows 8】pid为4的system进程占用80端口的解决办法
  8. 吉他基本功练习原理及方法
  9. 【给初学者,大佬见笑】100%成功UEFI安装双硬盘单系统Ubuntu最合理分区安装指南+ubuntu20.04安装
  10. 一篇可以终结房价涨跌讨论的文章(…
  11. lua菜鸟教程_lua经典学习教程.pdf
  12. MySQL从删库到跑路(6):子查询
  13. 宁夏新八景[之一]:古峡新韵
  14. 永恒之塔linux服务端,【永恒之塔单机5.8-6.5服务端】2020.06首发一键安装PC大型端游单机游戏客户端支持局域网联机玩[附视频搭建教程]...
  15. PAT A1066 Root of AVL Tree ——春水碧于天,画船听雨眠
  16. 用R对Twitter用户的编程语言语义分析
  17. 多可文档管理系统的手机版
  18. 用while语句显示1~10的平方。
  19. common injuries and treatment
  20. 【mac】设置的环境变在重启终端后不生效。

热门文章

  1. 野人岛4四季神器java,十一天,四季的感受,顶风冒雪美国中西部自驾旅游之五-黄石:梦想之地(1)...
  2. 从《战狼2》看吴京:选对方向、做对事
  3. 图片列表页面的加载优化
  4. ORA-22835:缓冲区对于CLOB到CHAR转换或BLOB到RAWZ转换而言太小
  5. pysptk, 语音信号处理工具包( SPTK )的python 封装器
  6. compose安装单个扩展_将自动化测试扩展到单个项目之外
  7. 使用requests爬取IT橘子
  8. 图像紫边消除(depurple)
  9. Project 的简单使用
  10. 多文档程序 两个menu框架_汇总9款优秀的开源小程序UI框架