{"id":23140,"date":"2016-12-04T14:12:14","date_gmt":"2016-12-04T14:12:14","guid":{"rendered":"http:\/\/www.inacreditavel.pt\/?p=23140"},"modified":"2016-12-05T01:15:49","modified_gmt":"2016-12-05T01:15:49","slug":"mysql-e-unicode","status":"publish","type":"post","link":"http:\/\/www.inacreditavel.pt\/?p=23140","title":{"rendered":"MySQL e Unicode"},"content":{"rendered":"<p>O MySQL tem suporte para Unicode, para qualquer dos formatos utf8, utf16 e utf32.<\/p>\n<p>Criei uma base de dados para guardar emoji, tanto no formato utf32 (unicode codepoints), que \u00e9 o formato com que s\u00e3o representados na especifica\u00e7\u00e3o do unicode.org, como no formato utf8, com que os emoji aparecem nas p\u00e1ginas web. Eis uma vers\u00e3o simplificada da tabela de carateres, assim como uma manipula\u00e7\u00e3o simples:<\/p>\n<pre>CREATE TABLE uni (\r\n\tutf32 CHAR(1) CHARACTER SET utf32,\r\n\tutf8 CHAR(1) CHARACTER SET utf8mb4\r\n);\r\n\r\nINSERT INTO uni VALUES (0x4E3D, 0xE4B8BD);\r\nINSERT INTO uni VALUES (0x1F600,0xF09F9880);\r\nSELECT * FROM uni;\r\nSELECT HEX(utf32) AS u32, HEX(utf8) AS u8 FROM uni;\r\n<\/pre>\n<p>Utilizei o CHARSET utf8mb4, ao inv\u00e9s de utf8 apenas, pois o utf8 usa, no m\u00e1ximo, 3 bytes por car\u00e1ter, enquanto que o utf8mb4 usa at\u00e9 4 bytes. O utf8 suporta apenas os carateres do Basic Multilingual Plane (BMP). (<a href=\"https:\/\/dev.mysql.com\/doc\/refman\/5.5\/en\/charset-unicode-conversion.html\">ver mais<\/a>)<\/p>\n<p>O resultado das sele\u00e7\u00f5es \u00e9 o seguinte:<\/p>\n<pre>SELECT * FROM uni;\r\n+-------+------+\r\n| utf32 | utf8 |\r\n+-------+------+\r\n| \u4e3d    | \u4e3d   |\r\n| <span data-ft=\"{&quot;tn&quot;:&quot;K&quot;}\"><span class=\"UFICommentBody\"><span class=\"_5mfr _47e3\"><img loading=\"lazy\" decoding=\"async\" class=\"img\" src=\"https:\/\/www.facebook.com\/images\/emoji.php\/v6\/fce\/1\/16\/1f600.png\" width=\"16\" height=\"16\" \/>    | <img loading=\"lazy\" decoding=\"async\" class=\"img\" src=\"https:\/\/www.facebook.com\/images\/emoji.php\/v6\/fce\/1\/16\/1f600.png\" width=\"16\" height=\"16\" \/><\/span><\/span><\/span>   |\r\n+-------+------+\r\n\r\nSELECT HEX(utf32) AS u32, HEX(utf8) AS u8 FROM uni;\r\n+----------+----------+\r\n| u32      | u8       |\r\n+----------+----------+\r\n| 00004E3D | E4B8BD   |\r\n| 0001F600 | F09F9880 |\r\n+----------+----------+\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>O MySQL tem suporte para Unicode, para qualquer dos formatos utf8, utf16 e utf32. Criei uma base de dados para guardar emoji, tanto no formato utf32 (unicode codepoints), que \u00e9 o formato com que s\u00e3o representados na especifica\u00e7\u00e3o do unicode.org, como no formato utf8, com que os emoji aparecem nas p\u00e1ginas web. Eis uma vers\u00e3o [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[22,1],"tags":[],"_links":{"self":[{"href":"http:\/\/www.inacreditavel.pt\/index.php?rest_route=\/wp\/v2\/posts\/23140"}],"collection":[{"href":"http:\/\/www.inacreditavel.pt\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.inacreditavel.pt\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.inacreditavel.pt\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.inacreditavel.pt\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=23140"}],"version-history":[{"count":9,"href":"http:\/\/www.inacreditavel.pt\/index.php?rest_route=\/wp\/v2\/posts\/23140\/revisions"}],"predecessor-version":[{"id":23150,"href":"http:\/\/www.inacreditavel.pt\/index.php?rest_route=\/wp\/v2\/posts\/23140\/revisions\/23150"}],"wp:attachment":[{"href":"http:\/\/www.inacreditavel.pt\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=23140"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.inacreditavel.pt\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=23140"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.inacreditavel.pt\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=23140"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}