推送内容如果包含了emoji表情,需要做以下修改
1 mysql 要用5.5.3以上版本(如果不能升级,请用base64保存,推送时再转码)
2 将表和推送内容表字段修改成utf8mb4_unicode_ci编码格式(不需要改系统的my.cnf,也不需要重启mysql)
如果用了apnsphp来推送,可能依然会出现发送emoji表情变成?的问题:
请找到Message.php的getPayload方法,在convert转码判断上加上"false &&"禁止执行。因为这段代码会将部分emoji表情截断。
$sJSON = json_encode($this->_getPayload(), defined('JSON_UNESCAPED_UNICODE') ? JSON_UNESCAPED_UNICODE : 0);
if (false && !defined('JSON_UNESCAPED_UNICODE') && function_exists('mb_convert_encoding')) {
$sJSON = preg_replace_callback(
'~\\\\u([0-9a-f]{4})~i',
create_function('$aMatches', 'return mb_convert_encoding(pack("H*", $aMatches[1]), "UTF-8", "UTF-16");'),
$sJSON);
}
至此,就解决问题了。
后来,又发现一个问题:
在推送消息时,由于apns在ios8以下版本只支持256个bytes,因此限制了push的消息长度。在测试环境(php5.5)下可正确push的消息,在正式环境(php5.3)下push的消息被截断了。经过代码检查,发现在push之前都会做json_encode,就是上述代码的第一行,而如果是php5.4以下版本,defined('JSON_UNESCAPED_UNICODE') 等于 false。因此,会执行下面的if 判断,为了支持emoji表情,忽略了判断执行,导致生成的消息长度在json_encode之后查过256个bytes,因此有些消息之前可以发出去的,现在发不出去了。为了彻底解决emoji和消息截断这个问题,还是将php升级到5.4以上版本吧。
同时建议将 超过长度的消息自动截断功能关闭:
protected $_bAutoAdjustLongPayload = false; /**< @type boolean If the JSON payload is longer than maximum allowed size, shorts message text. */
参考:
apnsphp截断发送内容导致emoji显示失效的问题:
https://github.com/iamcal/php-emoji/issues/8
emoji 编码表:
http://apps.timwhitlock.info/emoji/tables/unicode#
mysql 支持utf8mb4:
https://my.oschina.net/wingyiu/blog/153357
分享到:
相关推荐
在IT行业中,尤其是在Web开发和社交媒体交互中,emoji表情图片的使用已经成为了一种常见的交流方式。然而,处理这些表情图片可能会遇到一些问题,比如显示不全、格式不兼容或者加载速度慢等。本文将深入探讨如何有效...
在IT行业中,尤其是在社交软件的使用中,表情符号(emoji)扮演着重要的角色,它们能够丰富文字交流,增强表达力,使沟通更加生动有趣。微信作为中国最受欢迎的即时通讯应用之一,内置了大量的emoji表情供用户选择。...
在安卓端开发H5页面时,常常会遇到用户在输入框中使用手机自带的emoji表情符号。这些表情字符在不同的设备、浏览器上可能显示不一致,甚至无法正确显示,因此需要进行特殊处理。本文将详细讲解如何处理Android平台上...
抖音官方emoji表情包提供了以webp格式呈现的表情,这种格式为谷歌所开发,旨在为图像文件提供一种更加高效和轻量级的解决方案。Webp格式能够以更小的文件大小,保持与传统JPEG、PNG格式相当的图像质量,这对于像抖音...
在IT行业中,emoji表情已经成为日常交流和在线沟通的重要组成部分,特别是在移动设备和Web应用上。本文将详细讨论“emoji表情png图片”相关的知识点,包括它们的格式、用途、跨平台兼容性以及如何在不同系统中使用。...
在Web开发中,emoji表情已经成为用户交流不可或缺的一部分,特别是在社交网络和聊天应用中。iOS和Android设备用户在输入时会使用各自平台特定的emoji表情符号,这些符号在不同的操作系统和浏览器上可能显示不一致,...
在IT行业中,数据库管理和编程语言的交互是常见的工作场景,特别是在处理特殊数据类型时,如emoji表情。Oracle数据库系统在设计之初并未考虑对Unicode扩展区域的全面支持,因此默认情况下无法直接存储和检索emoji...
1. **自定义字体集成**:一种常见的方法是使用包含Emoji的特殊字体,如Noto Color Emoji或Apple Color Emoji。这些字体包含了大量预渲染的彩色图像,可以用于显示Emoji。在Unity中,可以通过创建`Font`对象并加载...
在IT行业中,emoji表情包已经成为了日常沟通的重要组成部分,特别是在社交网络、聊天应用以及各种Web应用中。这个主题“通用emoji表情包与JSON”涉及到如何将emoji集成到应用程序中,特别是利用JSON数据格式来存储和...
在IT行业中,尤其是在移动应用开发、网页设计以及社交媒体互动中,Emoji表情的使用已经变得非常普遍。它们是一种直观且富有表现力的方式,帮助用户在文本中传达情感和情绪。本资源包提供了3175张PNG格式的Emoji表情...
about the emoji truncated cause garbled, and you also do not need to worry about the text be affected by the class CharacterStyle and its subclass truncated cause unexpected result. The ...
微信最新Emoji表情149个png打包.zip
微信Emoji表情是微信聊天中广泛使用的视觉符号,用于表达各种情绪和反应。这些表情不仅仅限于常见的笑脸、爱心和动物图像,还包括许多富有特色的图标,如庆祝、惊讶、沮丧等情感,以及各种情境下的特殊符号。这个...
在微信小程序开发中,添加Emoji表情组件是一种常见的需求,特别是在社交类应用中,用户往往需要通过表情来丰富自己的表达。本文将详细介绍如何在微信小程序中实现一个基于雪碧图(Sprite Sheet)版本的Emoji表情组件...
"非常全的emoji基本表情包"提供了一个全面的资源库,包含了735个基本的emoji表情,这对于开发者来说是极具价值的工具。 首先,我们来深入了解一下emoji。Emoji是由日本电信公司NTT DoCoMo在1990年代初发明的,最初...
在Android开发中,EditText是用户输入文本的常见组件,但有时我们不希望用户在输入框中输入 Emoji 表情符号。这是因为Emoji可能会引起数据处理问题,例如数据库存储、后端接口解析等。本文将详细讲解如何在Android中...
解决页面添加微信emoji表情保存入库,修改mysql数据库的utf-8编码为utf8mb4编码,采用utf8mb4编码的好处是:存储与获取数据的时候,不用再考虑表情字符的编码与解码问题。
本文将深入探讨“emoji表情解析资源”所涉及的核心知识点,包括emoji的编码、解析方法、JavaScript实现以及相关的开发实践。 首先,我们需要理解emoji的编码体系。Unicode是现代计算机系统中广泛使用的字符编码标准...
本工具类包含了Emoji表情的转码和解码 包括了通过url获取文件大小的功能
判断字符串是否包含emoji表情