MySQL命令行乱码问题解决

现象:

    mysql的默认编码设置为utf-8,页面以utf-8的编码方式写入到数据库。用工具查看一切正常,但从mysql的命令行读数据出来总是乱码。

原因:

    mysql的客户端根本无法以utf-8的形式返回数据。windows下命令行的默认属性为GBK。

  1. mysql中关于字符集的种类有很多,对我们编程有影响的主要是客户端字符集(character_set_client)和数据库字符集(character_set_database)在写入时Mysq会将客户端指定的字符集转换成数据库字符集存入数据文件,读取时又将数据库字符集转换成客户端指定的字符集展示给客户端,把客户端字符集和数据库字符设置一致,显而易见的好处是免掉转换的性能损耗;另外,如果考虑到以后数据库的迁移,将数据库字符集设置为大多数数据库都支持的字符集会省掉很大麻烦。

  2. 我们对数据库的操作无非就是存取数据,在这一过程中,乱不乱码和数据库字符集好像没有什么关系。我们只要保证写入时选择的字符集和读取时选择的字符集一致,即只需保证两次操作的客户端字符集一致并且该字符集支持所存取的数据字符即可.

  3. MySQL命令行中文乱码

windows下命令行的默认属性为GBK。所以在命令行查询时将编码格式转换成gbk,在命令行插入时将编码格式转换为gbk(因为此时的client编码格式为gbk,因此需要将character_set_client设置为gbk时进行命令行插入),其余时间将编码格式转换成utf8,以此保证数据库的编码格式为utf8。

在MySQL命令行输入:show variables like ‘character%’;

查看当前配置的编码;

在MySQL命令行输入 :set names utf8;

则等同于

set character_set_client=utf8;

set character_set_results=utf8;

set character_set_connection=utf8;

这三条命令

在命令行插入数据之前

执行命令set names gbk;或者set names gb2312;

再插入

查询数据之前

执行命令set names gbk;或者set names gb2312;

完了之后再set names utf8;

这样就能正常插入和查询中文并且保持数据库编码为utf8

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值