-1

Inside a form, I have a contenteditable div. When the div loses focus, its contents are transferred (HTML included) to a hidden text input. Here is the simplified HTML:

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

This content field has its contents uploaded to a database, later to be used on a blog. The problem is that the either the contenteditable div or the input itself appear to encode their contents as ASCII rather than UTF-8, resulting in unrecognised characters in my database (such as "ð¡" instead of "").

I have added the following PHP header information to the top of my form page:

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

And also the following in the head section of every page on the site:

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

I also use a PHP function to "utf8ize" all of the $_POSTed fields.

... to no avail.

gilbert-v
  • 1,263
  • 1
  • 11
  • 23

2 Answers2

1

In order to save emojis in your database, your database charset should be utf8mb4.

  1. for that reason, you will have to change database collation first.

    ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin;

  2. then you will have to change the existing tables charset

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

Shobi
  • 10,374
  • 6
  • 46
  • 82
0

Please Check the Encoding from your .html file. You can find it out over Notepad++ under "Encoding"

iSaBo
  • 157
  • 1
  • 2
  • 16