mysql查询的是问号_MySQL客户端查询中文显示为问号(linux) | 学步园

乱码是因为编码字符集不能正确显示中文,问题可能出在3个方面

1. 终端不能正确显示中文

2. mysql客户端编码字符集不支持

3. mysql服务器端编码不支持

终端

首先测试终端能不能正确显示中文,可以在终端粘贴中文来看,若不能,则在菜单栏

terminal | set charater encoding 来选择合适的编码方式

客户端

若终端能够正确显示中文,则问题出在mysql上。

先检查编码方式,查看特定的数据库、表和字段的编码方式:

SHOW CREATE DATABASE db_name;

SHOW CREATE TABLE tbl_name;

SHOW FULL COLUMNS FROM tbl_name;

再把编码方式改为可以正确显示中文的utf8

把表默认的字符集和所有字符列(CHAR,VARCHAR,TEXT)改为新的字符集

ALTER TABLE tbl_name CONVERT TO CHARACTER SET character_name [COLLATE ...]

eg. ALTER TABLE mytable CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;

只修改表的默认字符集

ALTER TABLE tbl_name [DEFAULT] CHARACTER SET character_name [COLLATE...];

修改字段的字符集

ALTER TABLE tbl_name CHANGE col1 col1 CHARACTER SET character_name [COLLATE ...];

修改数据库字符集

ALTER DATABASE db_name DEFAULT CHARACTER SET character_name [COLLATE ...];

quiet.gif上述修改并不会对原有的记录产生影响,只会对新插入的数据生效

另:

创建数据库、表时指定其字符集

CREATE DATABASE mydb CHARACTER SET utf8  COLLATE utf8_general_ci;

CREATETABLE IF NOT EXISTS mytable

field1 char(64) NOT NULL,

...

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

服务器

查看服务器的编码方式

mysql> status;

该命令返回服务器的当前状态信息,包括编码信息

...

Server characterset:latin1

Db characterset:latin1

Client characterset:utf8

Conn. characterset:utf8

...

可以通过修改MySQL服务器的配置文件来修改默认字符集,该修改将作用于所有的数据库

例如,fedora 20的mysql配置文件在/etc/my.cnf.d/目录下

在[client]下添加

default-character-set=utf8

在[mysqld]下添加

default-character-set=utf8

保存设置,重启mysql服务即可

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值