如何在my.ini中将character_set_database和collat​​ion_database设置为utf8?

Jud*_*ing 28 mysql utf-8 character-encoding

我已经搜索了很多关于这个问题的信息.总而言之,这就是我的my.ini样子:

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 

[client]
database = abcdef
user = root
password = XXXXXX
default-character-set = utf8

[mysql]
default-character-set=utf8

[mysqld]
character_set_server=utf8
max_connections = 200
init_connect='SET collation_connection = utf8_general_ci' 
init_connect='SET NAMES utf8' 
Run Code Online (Sandbox Code Playgroud)

当我通过cmd进入mysql并发出:时show variables like "%character%";show variables like "%collation%";,这就是我得到的:

+--------------------------+---------------------------------+
| Variable_name            | Value                           |
+--------------------------+---------------------------------+
| character_set_client     | utf8                            |
| character_set_connection | utf8                            |
| character_set_database   | latin1                          |
| character_set_filesystem | binary                          |
| character_set_results    | utf8                            |
| character_set_server     | utf8                            |
| character_set_system     | utf8                            |
| character_sets_dir       | D:\env\MySQL5.6\share\charsets\ |
+--------------------------+---------------------------------+
8 rows in set (0.00 sec)

+----------------------+-------------------+
| Variable_name        | Value             |
+----------------------+-------------------+
| collation_connection | utf8_general_ci   |
| collation_database   | latin1_swedish_ci |
| collation_server     | utf8_unicode_ci   |
+----------------------+-------------------+
Run Code Online (Sandbox Code Playgroud)

我已经重启MySQL服务,所以任何人都可以给我如何改变一些想法character_set_database,以及collation_databaseutf8?非常感谢.

Chr*_*s J 43

这实际上不是my.cnf(或my.ini在这种情况下)的设置.mySQL从数据库自己的排序规则中获取此设置(创建时).为了使用你想要的utf8编码内联,请执行以下操作:

ALTER DATABASE databasename CHARACTER SET utf8 COLLATE utf8_general_ci;
Run Code Online (Sandbox Code Playgroud)

然后在mysql上重新启动(不记得是否需要它),然后是:

SHOW VARIABLES;
Run Code Online (Sandbox Code Playgroud)

一切都应该好,希望有所帮助!


旁注:我认为default-character-set现在已经被弃用了(mySQL 5.5+)并且似乎使配置文件变得烦躁.


tin*_*are 19

我总结一下:

确定哪些charset/collat​​ions可用

SHOW CHARSET;
SHOW COLLATION;
Run Code Online (Sandbox Code Playgroud)

检查charset

SHOW VARIABLES LIKE '%character%';
SHOW VARIABLES LIKE '%collation%';
Run Code Online (Sandbox Code Playgroud)

设置字符集(在配置文件中 - > my.cnf)

[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
Run Code Online (Sandbox Code Playgroud)

检查数据库/表charset

SHOW CREATE DATABASE databasename;
SHOW CREATE TABLE tablename;
Run Code Online (Sandbox Code Playgroud)

更改数据库/表charset:

ALTER DATABASE databasename CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE tablename CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
Run Code Online (Sandbox Code Playgroud)

创建数据库/表时设置:

CREATE DATABASE new_db CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_general_ci;
CREATE TABLE new_table (id INT) CHARSET utf8mb4 COLLATE utf8mb4_general_ci;
Run Code Online (Sandbox Code Playgroud)

注意:我听说在mysql中utf8不是真正的utf8,utf8mb4是真正的utf8.所以,如果你有特殊字符无法保存到mysql,也许你应该使用utf8mb4和utf8mb4_general_ci


Vip*_*ain 7

如何配置Character SetCollation.

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

  • 指定每个数据库的字符设置 例如,使用一个数据库的应用程序可能需要utf8,而使用另一个数据库的应用程序可能需要sjis.
  • 在服务器启动时指定字符设置.这会导致服务器对所有未进行其他安排的应用程序使用给定的设置.
  • 如果从源构建MySQL,请在配置时指定字符设置.这会导致服务器对所有应用程序使用给定的设置,而无需在服务器启动时指定它们.

这里显示的示例为您的问题设置utf8字符集,这里还设置了整理更有帮助(utf8_general_ci整理`).

指定每个数据库的字符设置

  CREATE DATABASE new_db
  DEFAULT CHARACTER SET utf8
  DEFAULT COLLATE utf8_general_ci;
Run Code Online (Sandbox Code Playgroud)

在服务器启动时指定字符设置

[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
Run Code Online (Sandbox Code Playgroud)

在MySQL配置时指定字符设置

shell> cmake . -DDEFAULT_CHARSET=utf8 \
           -DDEFAULT_COLLATION=utf8_general_ci
Run Code Online (Sandbox Code Playgroud)

这可能是冗长的答案,但有各种方法,你可以使用.希望我的回答对您有所帮助.有关更多信息,请访问http://dev.mysql.com/doc/refman/5.7/en/charset-applications.html