我已经搜索了很多关于这个问题的信息。总而言之,这就是我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'
当我通过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 |
+----------------------+-------------------+
我已经重启了MySQL服务,所以有人可以告诉我如何将character_set_database
以及collation_database
更改为utf8
吗?非常感谢。
答案 0 :(得分:40)
这实际上不是my.cnf
(或本例中为my.ini
)的设置。 mySQL从数据库自己的排序规则中获取此设置(创建时)。为了使用你想要的utf8编码内联,请执行以下操作:
ALTER DATABASE databasename CHARACTER SET utf8 COLLATE utf8_general_ci;
然后在mysql上重新启动(不记得是否需要它),然后是:
SHOW VARIABLES;
一切都应该好, 希望有所帮助!
旁注:我认为default-character-set
现在已被弃用(mySQL 5.5+)并且似乎使配置文件变得烦躁。
答案 1 :(得分:16)
我做了总结:
确定哪些字符集/排序规则可用
SHOW CHARSET;
SHOW COLLATION;
检查字符集
SHOW VARIABLES LIKE '%character%';
SHOW VARIABLES LIKE '%collation%';
设置字符集(在配置文件中 - > my.cnf)
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
检查数据库/表格字符集
SHOW CREATE DATABASE databasename;
SHOW CREATE TABLE tablename;
更改数据库/表格字符集:
ALTER DATABASE databasename CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE tablename CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
创建数据库/表时设置:
CREATE DATABASE new_db CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_general_ci;
CREATE TABLE new_table (id INT) CHARSET utf8mb4 COLLATE utf8mb4_general_ci;
注意强>: 我听说在mysql中utf8不是真正的utf8,utf8mb4是真正的utf8。 所以,如果你有特殊字符无法保存到mysql,也许你应该使用utf8mb4和utf8mb4_general_ci
答案 2 :(得分:7)
如何配置Character Set
和Collation
。
对于使用默认MySQL字符集存储数据的应用程序 和排序规则(
latin1, latin1_swedish_ci
),没有特殊配置 应该是需要的。如果应用程序需要使用数据存储 不同的字符集或排序规则,您可以配置字符集 信息有几种方式:
utf8
,而应用程序则需要utf8_general_ci
使用另一个数据库可能需要sjis。此处显示的示例用于设置utf8字符集的问题,此处还设置了排序规则以获得更多帮助( CREATE DATABASE new_db
DEFAULT CHARACTER SET utf8
DEFAULT COLLATE utf8_general_ci;
排序规则`)。
指定每个数据库的字符设置
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
在服务器启动时指定字符设置
shell> cmake . -DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci
在MySQL配置时指定字符设置
<button id="AddJudgeBt" type="button" class="positive block">
<span>Add </span>
<span class="icon arrows-add icon-add-remove"></span>
</button>
这可能是一个冗长的答案,但有各种方法,你可以使用。希望我的回答对您有所帮助。了解更多信息http://dev.mysql.com/doc/refman/5.7/en/charset-applications.html