推送内容如果包含了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...
微信Emoji表情是微信聊天中广泛使用的视觉符号,用于表达各种情绪和反应。这些表情不仅仅限于常见的笑脸、爱心和动物图像,还包括许多富有特色的图标,如庆祝、惊讶、沮丧等情感,以及各种情境下的特殊符号。这个...
1. **自定义字体集成**:一种常见的方法是使用包含Emoji的特殊字体,如Noto Color Emoji或Apple Color Emoji。这些字体包含了大量预渲染的彩色图像,可以用于显示Emoji。在Unity中,可以通过创建`Font`对象并加载...
在IT行业中,emoji表情包已经成为了日常沟通的重要组成部分,特别是在社交网络、聊天应用以及各种Web应用中。这个主题“通用emoji表情包与JSON”涉及到如何将emoji集成到应用程序中,特别是利用JSON数据格式来存储和...
在IT行业中,尤其是在移动应用开发、网页设计以及社交媒体互动中,Emoji表情的使用已经变得非常普遍。它们是一种直观且富有表现力的方式,帮助用户在文本中传达情感和情绪。本资源包提供了3175张PNG格式的Emoji表情...
微信最新Emoji表情149个png打包.zip
"非常全的emoji基本表情包"提供了一个全面的资源库,包含了735个基本的emoji表情,这对于开发者来说是极具价值的工具。 首先,我们来深入了解一下emoji。Emoji是由日本电信公司NTT DoCoMo在1990年代初发明的,最初...
在微信小程序开发中,添加Emoji表情组件是一种常见的需求,特别是在社交类应用中,用户往往需要通过表情来丰富自己的表达。本文将详细介绍如何在微信小程序中实现一个基于雪碧图(Sprite Sheet)版本的Emoji表情组件...
在Android开发中,EditText是用户输入文本的常见组件,但有时我们不希望用户在输入框中输入 Emoji 表情符号。这是因为Emoji可能会引起数据处理问题,例如数据库存储、后端接口解析等。本文将详细讲解如何在Android中...
解决页面添加微信emoji表情保存入库,修改mysql数据库的utf-8编码为utf8mb4编码,采用utf8mb4编码的好处是:存储与获取数据的时候,不用再考虑表情字符的编码与解码问题。
本文将深入探讨“emoji表情解析资源”所涉及的核心知识点,包括emoji的编码、解析方法、JavaScript实现以及相关的开发实践。 首先,我们需要理解emoji的编码体系。Unicode是现代计算机系统中广泛使用的字符编码标准...
本工具类包含了Emoji表情的转码和解码 包括了通过url获取文件大小的功能
判断字符串是否包含emoji表情
在微信开发过程中,有时我们需要在网页上展示用户发送的emoji表情,这为沟通增添了丰富的表现力。本教程将详细介绍如何在网页中正确显示这些表情,让用户体验更加生动有趣。 首先,我们要理解emoji表情的本质。它们...