É do conhecimento comum que os padrões do MySQL foram escolhidos sob forte influência de drogas, é basicamente por isso que eles são tão aleatórios e ruins. MariaDB também herda principalmente esses, devido à compatibilidade com versões anteriores. Ou talvez, você sabe, porque usar drogas enquanto programando é simplesmente divertido.
De qualquer forma, vamos consertar a utf8
codificação retardada de três bytes do MySQL . Curiosidade: a abominação que o MySQL chama utf8
NÃO é a conhecida codificação UTF-8; é uma variação quebrada de três bytes, incapaz de armazenar muitos caracteres Unicode comumente usados.
A correção é trivial. No arquivo de configuração, normalmente /etc/my.cnf
(ou /usr/local/etc/my.cnf
se instalado no OS X com Homebrew):
[client]
default-character-set = utf8mb4
[mysqld]
character-set-server = utf8mb4
(Neste ponto, você deve ter notado que a coloração da sintaxe do Coderwall é uma droga, mas você entendeu.)
Em seguida, recarregue o servidor emitindo um comando ao longo das linhas de:
mysql.server restart
Agora, para testar as novas configurações, você pode fazer o seguinte:
mysql -u root -p
MariaDB> SHOW VARIABLES WHERE Variable_name LIKE 'character_set_%' OR Variable_name LIKE 'collation%';
O resultado final deve ser:
+--------------------------+--------------------+
| Variable_name | Value |
+--------------------------+--------------------+
| character_set_client | utf8mb4 |
| character_set_connection | utf8mb4 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | utf8mb4 |
| character_set_server | utf8mb4 |
| character_set_system | utf8 |
| collation_connection | utf8mb4_general_ci |
| collation_database | utf8mb4_general_ci |
| collation_server | utf8mb4_general_ci |
+--------------------------+--------------------+
Coderwall, por favor, conserte seu editor de texto / Markdown! É ruim, e você deve se sentir mal.