【问题标题】:storing special utf characters in mysql database [duplicate]在mysql数据库中存储特殊的utf字符[重复]
【发布时间】:2014-11-04 03:11:32
【问题描述】:

我从我正在使用的 API 中得到以下响应:

\ud83d\udc51 CODE :: davon top\n\ud83d\udc51 MATERIAL :: spandek rayon\n\ud83d\udc51 PRICE :: 70.000\n\nFIX ORDER langsung hubungi contact :\n\ud83d\udc49 LINE : hijabroom\n\ud83d\udc49 PIN BB : 28EFA80B\nRead mekanisme before order!\n\n

我想将它存储在 mysql 数据库中,但是当我在我的数据库中看到它时,它存储为:

? CODE :: davon top
? MATERIAL :: spandek rayon
? PRICE :: 70.000

FIX ORDER langsung hubungi contact :
? LINE : hijabroom
? PIN BB : 28EFA80B
Read mekanisme before order!

表格设置如下配置:

我在这里做错了什么?

【问题讨论】:

  • 你不一定做错了什么;您描述的行为是我们期望的行为,因为 MySQL utf8 字符集仅支持基本多语言平面中的字符,不支持补充字符。

标签: php mysql


【解决方案1】:

MySQL utf8 字符集仅支持 BMP(基本多语言平面),代码点 U+0000U+D7FF

您显示的 unicode 点(U+D83DU+DC51)形成代理对,用于对补充字符进行编码。来自关于 utf8 支持的 MySQL 文档:

不支持补充字符(仅限 BMP 字符)。

参考:http://dev.mysql.com/doc/refman/5.5/en/charset-unicode-utf8.html

(您得到问号的原因是因为这是无法翻译的代码点的默认字符。)


MySQL 5.5 引入了utf8mb4 字符集,可以存储补充字符。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    • 2017-01-01
    • 1970-01-01
    • 2012-10-04
    • 1970-01-01
    相关资源
    最近更新 更多