The column I was trying to update had the utf8_unicode_ci collation, and the connection charset was set to utf8. While writing about JavaScript’s internal character encoding, I noticed that there was no way to insert the U+1D306 TETRAGRAM FOR CENTRE ( □) symbol into the MySQL database behind this site. By using utf8, I’d be able to store any symbol I want in my database - or so I thought. MySQL’s utf8įor a long time, I was using MySQL’s utf8 charset for databases, tables, and columns, assuming it mapped to the UTF-8 encoding described above. This way, UTF-8 is optimized for the common case where ASCII characters and other BMP symbols (whose code points range from U+000000 to U+00FFFF) are used - while still allowing astral symbols (whose code points range from U+010000 to U+10FFFF) to be stored. Symbols with lower numerical code point values are encoded using fewer bytes. UTF-8 is a variable-width encoding it encodes each symbol using one to four 8-bit bytes. (Not all of these Unicode code points have been assigned characters yet, but that doesn’t stop UTF-8 from being able to encode them.) The UTF-8 encoding can represent every symbol in the Unicode character set, which ranges from U+000000 to U+10FFFF. Alternative title: The things we do to store U+1F4A9 PILE OF POO ( □) correctly.Īre you using MySQL’s utf8 charset in your databases? In this write-up I’ll explain why you should switch to utf8mb4 instead, and how to do it.
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. Archives
June 2023
Categories |