我是MySQL的新手,我想知道:

如何像在navicat中一样使用字符集utf-8创建数据库?

create mydatabase;


...似乎正在使用某种默认字符集。

#1 楼

更新于2019-10-29
正如@Manuel Jordan在评论中提到的那样,utf8mb4_0900_ai_ciMySQL 8.0中的新默认设置,因此以下再次成为更好的做法:

CREATE DATABASE mydatabase CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;



2019-10-29之前的答案注意:以下内容现在被认为是更好的做法(请参见bikeman868的回答):

CREATE DATABASE mydatabase CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;



原始答案:

尝试一下:

CREATE DATABASE mydatabase CHARACTER SET utf8 COLLATE utf8_general_ci;


有关更多信息,请参见MySQL参考手册中的数据库字符集和排序规则。 br />

评论


MySQL的utf8mb4是我们其他人所称的utf8。那么您问MySQL的utf8是什么?它是utf-8的受限版本,仅适用于部分字符,但不适用于emoji表情。后来他们添加了utf8mb4,这是正确的实现,但是MySQL必须保持向后兼容,以解决以前的错误,因此这就是为什么添加新编码而不是修复旧编码的原因。所有新数据库都应使用utf8mb4。

– Stijn de Witt
18年11月28日在20:38

如果您想钻进兔子洞:收集utf8mb4_unicode_520_ci或utf8mb4_0900_ai_ci甚至特定于语言环境的示例,例如:utf8mb4_vi_0900_ai_ci。对于MariaDB 10.2.2+,您拥有utf8mb4_unicode_520_nopad_ci的“ nopad”整理。 dev.mysql.com/doc/refman/8.0/en/charset-unicode-sets.html

–弗兰克·复地
19-3-22在14:09



@shellbye考虑更新您的答案以提及utf8mb4_0900_ai_ci。似乎比utf8mb4_unicode_ci好

–曼努埃尔·乔丹(Manuel Jordan)
19-10-9在17:58

@ManuelJordan根据您的建议进行了更新。

– shellbye
19-10-29在8:31

您知道这是否也适用于MariaDB吗?

–曼戈
3月10日3:06

#2 楼

您应该使用:

CREATE DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;


请注意,不再建议使用utf8_general_ci最佳实践。请参阅相关的问答:

堆栈溢出时utf8_general_ci和utf8_unicode_ci有什么区别。

评论


考虑更新您的答案以提及有关utf8mb4_0900_ai_ci。似乎比utf8mb4_unicode_ci好

–曼努埃尔·乔丹(Manuel Jordan)
19-10-9在17:58