【问题标题】:Google App Engine support for utf8mb4Google App Engine 对 utf8mb4 的支持
【发布时间】:2012-11-05 14:58:08
【问题描述】:

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

【问题讨论】:

    标签: ios google-app-engine emoji utf8mb4


    【解决方案1】:

    首先,您链接到的文章讲述了作者使用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,而是 utf-8 的大约 6%(但大多数人不会注意到这一点,除非他们开始使用表情符号或其他字符)。

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

    【讨论】:

    • 感谢您的精彩解释!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-17
    • 1970-01-01
    • 1970-01-01
    • 2015-10-05
    • 2017-03-24
    • 1970-01-01
    • 2012-10-19
    相关资源
    最近更新 更多