对于使用默认MySQL字符集和排序规则存储数据的应用程序(latin1
,latin1_swedish_ci
),则不需要特别配置。如果应用程序需要使用不同的字符集或排序规则存储数据,您可以通过几种方式配置字符集信息:
为每个数据库指定字符设置。例如,使用一个数据库的应用程序可能使用默认的
latin1
,而使用其他数据库的应用程序可能使用sjis
.在服务器启动时指定字符设置。这将导致服务器对所有不做其他安排的应用程序使用给定的设置。
如果从源代码构建MySQL,请在配置时指定字符设置。这将导致服务器使用给定的设置作为所有应用程序的默认设置,而不必在服务器启动时指定它们。
当不同的应用程序需要不同的字符设置时,每个数据库技术提供了很大的灵活性。如果大多数或所有应用程序使用相同的字符集,在服务器启动或配置时指定字符设置可能是最方便的。
对于每个数据库或服务器启动技术,设置控制数据存储的字符集。应用程序还必须告诉服务器使用哪个字符集进行客户机/服务器通信,如下面的说明所述。
的示例假设使用了use utf8
字符集和utf8_general_ci
的缺省值的替代方法latin1
而且latin1_swedish_ci
.
为每个数据库指定字符设置。若要创建数据库,使其表使用给定的默认字符集和排序规则进行数据存储,请使用
创建数据库
这样的陈述:创建数据库mydb字符集utf8;
在数据库中创建的表使用
use utf8
而且utf8_general_ci
默认为任何字符列。使用数据库的应用程序还应该在每次连接时配置到服务器的连接。这可以通过执行
SET NAMES 'utf8'
连接后的语句。无论使用什么连接方法,都可以使用该语句mysql客户端、PHP脚本等等)。在某些情况下,可以将连接配置为以其他方式使用所需的字符集。例如,连接使用mysql时,可以指定
——default-character-set = utf8
命令行选项,以达到相同的效果SET NAMES 'utf8'
.有关配置客户端连接的详细信息,请参见第10.4节“连接字符集和排序规则”.
请注意如果你使用
修改数据库
要更改数据库默认字符集或排序规则,必须删除数据库中使用这些默认值的现有存储例程,并重新创建,以便它们使用新的默认值。(在存储例程中,如果没有显式指定字符集或排序规则,具有字符数据类型的变量将使用数据库默认值。看到第13.1.16节,CREATE PROCEDURE和CREATE FUNCTION语句)。在服务器启动时指定字符设置。要在服务器启动时选择字符集和排序规则,请使用
——character-set-server
而且——collation-server
选项。例如,要在选项文件中指定选项,包括以下几行:[mysqld] character-set-server=utf8 sort -server=utf8_general_ci . [mysqld] character-set-server= utf8_general_ci .
这些设置应用于服务器范围,并作为默认值应用于任何应用程序创建的数据库以及在这些数据库中创建的表。
应用程序仍然需要使用配置它们的连接
组名称
如前所述,或在它们连接后具有同等意义。方法启动服务器——init_connect="SET NAMES 'utf8'"
引起选项组名称
为连接的每个客户端自动执行。然而,这可能会产生不一致的结果,因为init_connect
属性的用户不执行超级
特权。在MySQL配置时指定字符设置。如果从源代码配置和构建MySQL,要选择字符集和排序规则,请使用
DEFAULT_CHARSET
而且DEFAULT_COLLATION
CMake选项:cmake。-DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci
生成的服务器使用
use utf8
而且utf8_general_ci
作为数据库和表以及客户端连接的默认值。没有必要使用——character-set-server
而且——collation-server
在服务器启动时指定这些默认值。应用程序也不需要使用来配置它们的连接组名称
或者在它们连接到服务器后具有同等意义。
无论如何配置MySQL字符集以供应用程序使用,都必须考虑这些应用程序执行的环境。例如,如果使用从编辑器中创建的文件中提取的UTF-8文本发送语句,则应该将环境的区域设置设置为UTF-8,以使文件编码正确,并使操作系统正确处理它。如果你使用mysql客户端从终端窗口,窗口必须配置为使用UTF-8,否则字符可能无法正常显示。对于在Web环境中执行的脚本,该脚本必须为与MySQL服务器的交互正确地处理字符编码,并且必须生成正确指示编码的页面,以便浏览器知道如何显示页面的内容。例如,你可以包括这个< meta >
标签。< >头
元素: