10bet网址
MySQL 8.0参考手册
相关的文档10bet官方网站 本手册下载 本手册摘录

MySQL 8.0参考手册/字符集,排序规则,Unicode/配置应用字符集和排序规则

10.5配置应用字符集和排序规则

对于使用默认MySQL字符集和排序规则(utf8mb4utf8mb4_0900_ai_ci),不需要特殊配置。如果应用程序需要使用不同的字符集或排序来存储数据,您可以通过以下几种方式配置字符集信息:

  • 指定每个数据库的字符设置。例如,使用一个数据库的应用程序可能使用默认的utf8mb4,而使用其他数据库的应用程序可能使用sjis

  • 在服务器启动时指定字符设置。这将导致服务器对所有没有进行其他安排的应用程序使用给定的设置。

  • 如果从源代码构建MySQL,请在配置时指定字符设置。这将导致服务器使用给定的设置作为所有应用程序的默认设置,而不必在服务器启动时指定它们。

当不同的应用程序需要不同的字符设置时,每个数据库技术提供了很大的灵活性。如果大多数或所有应用程序使用相同的字符集,在服务器启动或配置时指定字符设置可能是最方便的。

对于每个数据库或服务器启动技术,设置控制用于数据存储的字符集。应用程序还必须告诉服务器要使用哪个字符集进行客户机/服务器通信,如下面的说明所述。

这里显示的示例假定使用latin1字符集和latin1_swedish_ci的默认值的替代方法utf8mb4utf8mb4_0900_ai_ci

  • 指定每个数据库的字符设置。若要创建一个数据库,使其表使用给定的默认字符集和排序规则来存储数据,请使用创建数据库声明如下:

    CREATE DATABASE mydb CHARACTER SET latin1 COLLATE latin1_swedish_ci

    在数据库中创建的表使用latin1latin1_swedish_ci默认为任何字符列。

    使用数据库的应用程序还应该在每次连接时配置到服务器的连接。这可以通过执行设置名称“latin1”中的一个连接后声明。该语句可用于任何连接方法(mysql客户端、PHP脚本等等)。

    在某些情况下,可以将连接配置为以其他方式使用所需的字符集。例如,使用mysql,可以指定——default-character-set = latin1的命令行选项,以达到相同的效果设置名称“latin1”中的一个

    有关配置客户端连接的详细信息,请参见第10.4节,“连接字符集和排序规则”

    请注意

    如果你使用修改数据库要更改数据库默认字符集或排序规则,必须删除并重新创建数据库中使用这些默认值的现有存储例程,以便它们使用新的默认值。(在存储例程中,如果没有显式指定字符集或排序规则,则具有字符数据类型的变量使用数据库默认值。看到第13.1.17节,“CREATE PROCEDURE and CREATE FUNCTION Statements”.)

  • 在服务器启动时指定字符设置。若要在服务器启动时选择字符集和排序规则,请使用——character-set-server——collation-server选项。例如,要在选项文件中指定选项,请包含以下行:

    (mysqld) character-set-server = latin1 collation-server = latin1_swedish_ci中的一个

    这些设置适用于服务器范围,并作为任何应用程序创建的数据库和在这些数据库中创建的表的默认设置。

    应用程序仍然需要使用组名称或等效后,他们连接,如前所述。您可能想用——init_connect =“名字”latin1”中的一个选择原因组名称为每个连接的客户端自动执行。但是,这可能会产生不一致的结果,因为init_connect值的用户不执行CONNECTION_ADMIN特权(或被弃用的超级特权)。

  • 在MySQL配置时指定字符设置。如果从源代码配置和构建MySQL,要选择字符集和排序规则,请使用DEFAULT_CHARSETDEFAULT_COLLATIONCMake选项:

    cmake。-DDEFAULT_CHARSET = latin1 \ -DDEFAULT_COLLATION = latin1_swedish_ci中的一个

    产生的服务器使用latin1latin1_swedish_ci作为数据库和表以及客户端连接的默认值。没有必要使用——character-set-server——collation-server在服务器启动时指定这些默认值。应用程序也没有必要使用组名称或在连接到服务器后等效。

无论如何为应用程序使用配置MySQL字符集,都必须考虑执行这些应用程序的环境。举个例子,如果你打算使用utf - 8发送语句文本从一个文件中创建一个编辑,您应该编辑文件与您的环境的场所设置为utf - 8的文件编码是正确的,所以操作系统正确地处理它。如果你使用mysql客户端从一个终端窗口内,该窗口必须配置为使用UTF-8或字符可能无法正常显示。对于在Web环境中执行的脚本,该脚本必须正确处理与MySQL服务器交互的字符编码,并且必须生成正确指示编码的页面,以便浏览器知道如何显示页面的内容。例如,您可以包含这个< meta >标签在你的<头>元素:

< meta http-equiv = " - type”内容= " text / html;utf - 8字符集= " / >