2017年4月6日 星期四

mysql utf8

原來要 mysql 支援 utf8 不是這麼預設的,好煩 = =||

好吧,歷史因素,可以體諒。

首先看這邊[1]看看怎麼設定(或是變更現有的 database)mysql 支援 unicode

看就好,先不要動手!

注意你要的 collate 是啥。「collate」指的是 DB 用來比對字串的時候所使用的準則,utf8mb4 預設的 collate 是「utf8mb4_general_ci」,這個很有可能不是你要的,因為他會把「ç」跟「c」當作同一個字元,你需要的可能是「utf8mb4_bin」。

然後如果你用的是 docker,不用去寫 my.cnf,run image 的時候直接下命令[2]。

$ docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

好,如果你不是用 docker,那現在你可以動手了。去 alter 你的 DB 跟寫你的 my.cnf。
用 docker 的人只要 alter DB 就好,然後 run image 的時候用下指令的。

Note: MySQL 的 utf8 charset 不是真的 utf8,他只支援到 unicode 的一個子集,最多三個 byte。到了 5.5.忘了 版之後才有 utf8mb4 charset 支援整個 unicode codepoint。

[1] https://mathiasbynens.be/notes/mysql-utf8mb4
[2] https://hub.docker.com/_/mysql/

沒有留言:

張貼留言