根据这个article,从iOS4到iOS6支持表情符号字符的正确方法是使用utf8mb4编码。 App Engine的数据存储是否支持utf8mb4?目前我在我的iOS应用程序中使用Java版本的App Engine作为后端。
答案 0 :(得分:3)
首先,您链接的文章讨论了作者使用mysql
作为数据库开发iOS应用程序的经验。在mysql中,编码“utf8”仅表示长度为1,2或3个字节的字符。
但是,根据定义,utf8支持1,2,3或4个字节的长字符。因此,在mysql编码和排序规则的上下文中,utf8表示字符最多只有3个字节。对于4字节长的字符,mysql设计了utf8mb4编码。
但是,这仅适用于mysql上下文。在mysql世界之外,utf8自动表示支持1,2,3或4字节字符。见UTF-8 wikipedia page,它在介绍性段落中讨论了这个问题:
UTF-8对Unicode中的每个1,112,064 [7]个代码点进行编码 使用一到四个8位字节的字符集(在。中称为“八位字节”) Unicode标准)。
因此,当平台或软件应用程序声称支持UTF-8时,它意味着支持所有1,112,064个代码点,每个字符可以消耗1,2,3或4个字节。
mysql案例是一个异常,其中utf8编码实际上不是100%utf8但只有6%的utf-8(但大多数人不会注意到,除非他们开始使用表情符号或其他字符)。
所以我的建议是,当他们接受utf-8作为他们支持的有效编码时,可以安全地假设谷歌应用引擎支持4字节字符。