
In MySQL, never use “utf8”. Use “utf8mb4” - suresh70
https://medium.com/@adamhooper/in-mysql-never-use-utf8-use-utf8mb4-11761243e434
======
mikl
MySQL is a great example how extreme commitment to backwards compatibility
makes your whole product backwards.

It is chock full of bugs and footguns that you can work around and mitigate if
you know how to configure it correctly, but most of those improvements are
still not the default.

And the `utf8` encoding, that does not fully support UTF-8 looks like it’ll
stay around forever. ಠ_ಠ

As the author of the post says, much better to just use PostgreSQL, will save
you a lot of headaches down the road.

~~~
Deukhoofd
> And the `utf8` encoding, that does not fully support UTF-8 looks like it’ll
> stay around forever. ಠ_ಠ

No, it looks like the exact opposite. As the MySQL documentation clearly
states:

> The utf8mb3 character set is deprecated and will be removed in a future
> MySQL release. Please use utf8mb4 instead. Although utf8 is currently an
> alias for utf8mb3, at some point utf8 will become a reference to utf8mb4. To
> avoid ambiguity about the meaning of utf8, consider specifying utf8mb4
> explicitly for character set references instead of utf8.

~~~
orf
I think every developer has written the famous words: “at some point we will
remove this”. The accuracy of that statement often seems to be pretty dubious.

~~~
evanelias
Doesn't seem dubious to me. I would expect it to be removed (or at least have
the utf8 alias changed to point to utf8mb4) in the next major release. utf8mb3
was deprecated in the most recent release series (MySQL 8). For feature
deprecation notices, MySQL consistently follows a pattern of deprecate in
major release N --> remove/change in major release N+1.

------
donalhunt
previous discussion:
[https://news.ycombinator.com/item?id=17310690](https://news.ycombinator.com/item?id=17310690)

additional context (which the OP didn't reference):

[https://mysqlserverteam.com/mysql-8-0-when-to-use-
utf8mb3-ov...](https://mysqlserverteam.com/mysql-8-0-when-to-use-utf8mb3-over-
utf8mb4/)

[https://mysqlserverteam.com/sushi-beer-an-introduction-of-
ut...](https://mysqlserverteam.com/sushi-beer-an-introduction-of-utf8-support-
in-mysql-8-0/)

[https://dev.mysql.com/doc/refman/5.5/en/charset-unicode-
utf8...](https://dev.mysql.com/doc/refman/5.5/en/charset-unicode-utf8mb3.html)

hint: "Exactly the same set of characters is available in utf8mb3 and ucs2."

------
pwinnski
"Never" seems an odd choice. Until somewhat recently the recommendation would
have been the now-deprecated "utf8mb3" for which "utf8" is a synonym.

Until the next release, when "utf8" is updated to be a synonym for "utf8mb4",
yes, use "utf8mb4" directly. At the next release, you can use "utf8" again.

