1

根据这篇文章,从 iOS4 到 iOS6 支持 emoji 字符的正确方法是使用 utf8mb4 编码。App Engine 的数据存储区是否支持 utf8mb4?目前,我在我的 iOS 应用程序中使用 Java 版本的 App Engine 作为后端。

4

1 回答 1

3

首先,您链接到的文章讨论了作者使用数据库开发 iOS 应用程序的经验mysql。在 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 维基百科页面,它在介绍性段落中谈到了这一点:

UTF-8 使用一到四个 8 位字节(在 Unicode 标准中称为“八位字节”)对 Unicode 字符集中的 1,112,064[7] 个代码点进行编码。

因此,当一个平台或软件应用程序声称支持 UTF-8 时,这意味着支持所有 1,112,064 个代码点,每个字符可以消耗 1、2、3 或 4 个字节。

mysql 案例是一个异常情况,其中 utf8 编码并不是真正的 100% utf8,而是只有 6% 的 utf-8(但大多数人不会注意到,除非他们开始使用表情符号或其他字符)。

所以我的建议是,当谷歌应用引擎接受 utf-8 作为他们支持的有效编码时,可以安全地假设它们支持 4 字节字符。

于 2013-01-17T11:02:51.017 回答