与 utf8_general_ci & utf8_unicode_ci 混淆
Confusion with utf8_general_ci & utf8_unicode_ci
Mysql 服务器排序规则在 my.cnf
中是 utf8_general_ci
我正在为数据库使用 utf8_general_ci 排序规则,现在我已经创建了几个 table 与 utf8_unicode_ci 排序规则
相同的数据库。
现在我想用 utf8_unicode_ci 代替 server/database/tables/fields。为了首先做到这一点,我需要将服务器的排序规则更改为 utf8_unicode_ci
然后对于数据库,tables 和字段。
我的问题是我已经使用 utf8_general_ci 存储了 table 中的数据,我可以保持原样而不对数据做任何事情吗?或者我是否需要进行任何类型的转换。
另一件事是,如您所见,服务器级排序规则是 utf8_general_ci,但在 table 和字段级是 utf8_unicode_ci,因此在我存储和检索数据时使用我当前的设置这些 table 使用什么排序规则 mysql?
谢谢。
"Server level" 排序规则没有任何意义。
服务器和数据库级别的字符集(和排序规则)仅用作 table(和数据库)创建的默认值。
- 比如说,如果您在创建数据库时没有提供任何排序规则,它将使用服务器排序规则创建。但是如果你这样做了 - 将使用提供的一个并且服务器整理根本不会干扰。
- 如果您没有在 table 定义中提供任何排序规则,将使用数据库排序规则创建 table。但是如果你这样做 - 提供的将被使用,服务器和数据库整理都不会影响你的查询。
只有 table 和字段级排序规则才是重要的。
if i already have data in tables stored using utf8_general_ci, can i just keep as it is
是的。您可以在数据库中使用任何字符集 table。
Mysql 服务器排序规则在 my.cnf
中是 utf8_general_ci我正在为数据库使用 utf8_general_ci 排序规则,现在我已经创建了几个 table 与 utf8_unicode_ci 排序规则 相同的数据库。
现在我想用 utf8_unicode_ci 代替 server/database/tables/fields。为了首先做到这一点,我需要将服务器的排序规则更改为 utf8_unicode_ci 然后对于数据库,tables 和字段。
我的问题是我已经使用 utf8_general_ci 存储了 table 中的数据,我可以保持原样而不对数据做任何事情吗?或者我是否需要进行任何类型的转换。
另一件事是,如您所见,服务器级排序规则是 utf8_general_ci,但在 table 和字段级是 utf8_unicode_ci,因此在我存储和检索数据时使用我当前的设置这些 table 使用什么排序规则 mysql?
谢谢。
"Server level" 排序规则没有任何意义。
服务器和数据库级别的字符集(和排序规则)仅用作 table(和数据库)创建的默认值。
- 比如说,如果您在创建数据库时没有提供任何排序规则,它将使用服务器排序规则创建。但是如果你这样做了 - 将使用提供的一个并且服务器整理根本不会干扰。
- 如果您没有在 table 定义中提供任何排序规则,将使用数据库排序规则创建 table。但是如果你这样做 - 提供的将被使用,服务器和数据库整理都不会影响你的查询。
只有 table 和字段级排序规则才是重要的。
if i already have data in tables stored using utf8_general_ci, can i just keep as it is
是的。您可以在数据库中使用任何字符集 table。