Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JQuery将HTML实体/表情符号发布到PHP服务器_Php_Mysql_Character Encoding_Html Entities - Fatal编程技术网

JQuery将HTML实体/表情符号发布到PHP服务器

JQuery将HTML实体/表情符号发布到PHP服务器,php,mysql,character-encoding,html-entities,Php,Mysql,Character Encoding,Html Entities,我使用JQuery将表单值序列化并发布到PHP/MySQL服务器,表单文本区域包含作为HTML实体的文本和表情: <textarea>Hello &#x1f600; and goodbye</textarea> 你好😀;再见 服务器接收: 您好\ud83d\ude00,再见 但是,只有“Hello”正确地存储在数据库中。表情符号/实体及其消失后的任何文本。数据库获取: 你好 一切都是UTF-8贯穿始终 如何正确地将其解析为可以存储的内容,然后以正

我使用JQuery将表单值序列化并发布到PHP/MySQL服务器,表单文本区域包含作为HTML实体的文本和表情:

<textarea>Hello &#x1f600; and goodbye</textarea>
你好😀;再见 服务器接收:

您好\ud83d\ude00,再见

但是,只有“Hello”正确地存储在数据库中。表情符号/实体及其消失后的任何文本。数据库获取:

你好

一切都是UTF-8贯穿始终

如何正确地将其解析为可以存储的内容,然后以正确呈现的方式返回HTML?我一定忽略了一些简单的事情。

解决了

根据问题下方注释中的Andy Foster更改数据库/表排序规则,或者更改JSON编码/解码以确保其正确保存为字符串

json_encode($str);
json_decode($str);
在我的例子中,有三个因素会影响编码/呈现:

1) 使用JQuery serialize()进行初始提交,该函数将表情符号转换为Unicode转义序列

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


3) 将JSON解码的表情符号字符串呈现回HTML模板时输出转义。

尝试将编码为
utf8mb4
@AndyFoster您的意思是在数据库级别?在PHP中,您是否将PDO用于参数化查询?我们能看到那个密码吗?@MattS没什么比插入更复杂的了。。。值(“$escaped.”)@tomyes。SQL将在第一个4字节unicode字符处截断插入。我提到了为什么你要从你的答案中删除所有代码?@GrumpyCrouton在花了更多的时间之后,我意识到我发布的代码是特定于某个目的的,但不一定对每个场景都有用。我已经用更多的信息更新了答案。当使用
json\u encode
时,添加
json\u UNESCAPED\u UNICODE
作为第二个参数。@RickJames有趣的是,使用json\u UNESCAPED\u UNICODE再次将其破坏,字符串无法正确保存。@Tom-然后需要解决这个问题。请参阅中的“最佳实践”