windows 命令提示行下 SQL 无法插入中文字符问题
亲测有效!!!!
场景
使用SQL语句插入中文字符时,无法插入中文字符;
或根据其他博文,已经修改了编码为utf-8 甚至 utf-8mb4,仍然报错;
cmd提示:incorrect string value
解决方案:set names utf-8;
(Windows10这句话原样复制不要有任何改动!!原因下述)
具体思路:解决编码问题
1. mysql server 中有哪些编码
mysql指定编码的变量 | 是否需要更改 | 具体作用 |
---|---|---|
character_set_client | 可能用到 | 设置客户端使用的字符集 |
character_set_connection | 可能用到 | 设置连接数据库时的字符集 |
character_set_database | 常用 | 设置默认创建数据库的编码格式 |
character_set_results | 可能用到 | 数据库给客户端返回时使用的编码格式 |
character_set_filesystem | 一般不用 | 文件系统的编码格式,把操作系统上的文件名转化成此字符集,即把 character_set_client转换character_set_filesystem, 默认binary是不做任何转换的。 |
character_set_server | 不要修改 | 服务器安装时指定的默认编码格式 |
character_set_system | 不要修改 | 数据库系统使用的编码格式,为存储系统元数据的编码格式 |
character_sets_dir | 不要修改 | 字符集安装的目录 |
2.该改哪些编码?
要保证编码正常输入输出,需保证上述4个黄色变量编码格式一致,且与你的程序的默认编码一致。
仅更改database的默认编码,其作用仅仅是告诉 mysql server,在收到客户端发来的语句后, mysql server内部操作应当使用何种字符 (但并没有正确配置 接收(client、connection) 和输出(result)应使用的字符)。
3. 改成什么编码?
上述4个黄色变量编码格式一致,且与你的程序的默认编码一致。(win10 默认gbk而不是utf-8);
4. 怎么修改?
使用 set names。(set names utf-8 ; )(set names gbk;)
set names 不是指“更改 names 这一列的属性”,而是对mysql server 的一种配置更改动作,相当于便捷操作直接一键更改三个变量(character_set_client 、 character_set_connection 、 character_set_results );