版本:
主机系统使用win10,mysql是5.7.4版本;
现象:
win10系统,用命令行学习mysql时,想要在表中存入一条含有中文字符的记录,会报出如下错误:
解决方法:
步骤1:修改mysql配置文件my.ini文件;将#default-character-set修改为default-character-set=utf8,将#character-set-server修改为character-set-server=utf8,这里设置了创建新表时默认使用的字符集,以及客户端的字符集;
步骤2:重启mysql服务;我电脑设置的是自动启动mysql服务,只需要重启电脑即可;也可以在右键此电脑->管理,进入计算机管理的服务和应用程序里,找到mysql57服务,手动重启;
重启后可访问mysql字符集设置,如下:
步骤3:修改win10操作系统的字符集;控制面板->时钟和区域->区域->管理->更改系统区域设置(C)->勾选“使用Unicode UTF-8提供全球语言支持(U)”,然后重启电脑;
步骤4:验证是否已将操作系统字符集修改为UTF8;打开命令行,在标题行右键查看命令行属性,当前代码页显示65001(UTF-8),即为成功;(否则默认应该是GBK字符集,如果已经是UFT-8,则无需进行步骤3)
步骤5:再次插入含中文记录,则显示成功!
问题分析与疑问:
1.对于创建好的数据库和表,已经指定了字符集后,character_set_database并不是utf8格式时,即使设置了mysql.ini文件,对已经创建的数据库和表不起作用,使用set character_set_database=utf8;命令修改数据库的字符集后,仍然不能对已经创建好的数据库、表起作用,只能删除数据库、表重新创建;
2.操作系统命令行的编码字符集在其中起到的作用,假设不修改win10系统默认字符集,使用gbk编码,而将mysql编码的某些项或者全部项修改为gbk,是否能起到同样的作用?