从 ContentEditable 元素输出 UTF-8

Outputting UTF-8 from ContentEditable Element

在一个表单中,我有一个 contenteditable div。当 div 失去焦点时,其内容(包括 HTML)将转移到隐藏文本 input。这是简化的 HTML:

<div contenteditable id="editable"></div>
<input class="hidden" id="content" /> 

content 字段的内容已上传到数据库,稍后用于博客。问题是 contenteditable divinput 本身似乎将其内容编码为 ASCII 而不是 UTF-8,导致我的数据库中出现无法识别的字符(例如“ð “ 代替 ””)。

我已将以下 PHP header 信息添加到我的表单页面的顶部:

header("Content-type: text/html; charset=utf-8");

以及网站每个页面的 head 部分中的以下内容:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

我还使用 PHP 函数来 "utf8ize" 所有 $_POSTed 字段。

...无济于事。

请检查您的 .html 文件中的编码。您可以在 "Encoding"

下通过 Notepad++ 找到它

为了在您的数据库中保存表情符号,您的数据库字符集应为 utf8mb4

  1. 因此,您必须先更改数据库排序规则。

    ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin;

  2. 那么您将不得不更改现有表的字符集

    ALTER TABLE `Tablename` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin