JQuery post HTML 实体/表情符号到 PHP 服务器

JQuery post HTML entity / emoji to PHP server

我正在使用 JQuery 序列化 post 表单值到 PHP/MySQL 服务器,表单 textarea 包含文本和表情符号作为 HTML 实体:

<textarea>Hello &#x1f600; and goodbye</textarea>

服务器收到:

Hello \ud83d\ude00 and goodbye

但是,只有 "Hello" 被正确地存储在数据库中。 emoji/entity 和它之后的任何文本都消失了。数据库获取:

Hello

自始至终一切都是 UTF-8。

将其解析为可以存储的内容然后以正确呈现的方式返回到 HTML 的正确方法是什么?我一定是忽略了一些简单的东西。

已解决。

按照 Andy Foster 在问题下方的评论中更改 database/table 排序规则,或者 JSON encode/decode 以确保将其正确保存为字符串。

json_encode($str);
json_decode($str);

就我而言,影响 encoding/rendering 的三件事:

1) 初始提交使用 JQuery serialize() 将表情符号转换为 Unicode 转义序列。

2) 将 Unicode 转义序列保存到数据库中。我使用 JSON 编码来解决这个问题。

3) 将 JSON-decoded 表情符号字符串渲染回 HTML 模板时输出转义。