Mysql数据库,表中有中文时,select出来好多问号(?)的解决方法

在QQ群里问了一些高手,同时参考了这篇文章:http://huangyunbin.iteye.com/blog/1113983,终于把这个问题搞定了。

首先,我用的是zip包的Mysql,直接解压使用的,网上说修改my.ini或者my.cnf在我机器上根本就找不到。但是my.ini这个东西是可以自己添加的。将mysql目录中的my-default.ini文件复制一份(原来的模板还是留一份不要乱动的好),重命名为my.ini。打开my.ini,在最后添上如下两行:

[mysql]
default-character-set=utf8

保存。同时要检查 ./data/performance_schema目录下的db.opt文件中有这样两行:

default-character-set=utf8
default-ollation=utf8_chinese_ci

之后是在数据库里进行设置。在mysql中输入

1 mysql> show variables like ‘‘char%‘‘;

可以看到我的数据库中字符集是酱婶的:

遵照大部分网友的建议,除了filesystem那个binary不动,其它全部改成utf8好了。

1 MYSQL>set character_set_client = ‘utf8‘;
2 MYSQL>set character_set_connection = ‘utf8‘;
3 MYSQL>set character_set_database = ‘utf8‘;
4 MYSQL>set character_set_results= ‘utf8‘;
5 MYSQL>set character_set_server=‘utf8‘;

OK。可以再次执行show variables like ‘‘char%‘‘;查看修改结果。现在字符集都是UTF-8了。

最后一步,要修改之前乱码的表,将字符编码也修改为UTF-8:

1 MYSQL>alter table 表名 modify 列名 字段类型 character set utf8;

这样就完成啦。再select一下之前的表,中文是不是都变过来了?

====================广告时间====================

最后还是推荐一下我的群:鱼香肉丝。群号:234509621。这里有产品经理,有测试人员,有代码大牛,有立志于从事IT行业的正在读书的明日之星,还有各种技术资料。欢迎IT患者加入。不过加群有限制,请注明加群的理由,否则管理员不会给通过的(一般写个IT啊,计算机啊,算法啊,或者做什么工作的,就差不多可以)。进群后先跟大家打个招呼,然后到群文件中下载群规看看。之后就可以跟大家愉快的玩耍了。

时间: 2024-10-09 21:57:08

Mysql数据库,表中有中文时,select出来好多问号(?)的解决方法的相关文章

VC连接mysql数据库错误:libmysql.lib : fatal error LNK1113: invalid machine 解决方法

VC连接MySQL的配置过程在上一篇博文中,不过当你设置好,以为万事大吉的时候,运行却出现这个错误:libmysql.lib : fatal error LNK1113: invalid machine type. 无效的机器类型,真的是很让人捉急. 发生这个错误的原因是,我在win8.1上安装的是64bit的mysql服务器,而我编译32位的VC程序,连接的是64位的libmysql.lib库,所以会产生 “无效的机器类型(invalid machine type)”的错误提示. 对于这个“e

mysql数据库表字段使用DESC等关键字报错及解决方法

<!-- desc是MySQL数据库的关键字,作为字段名直接使用会报错 --> <sql id="Base_Column"> id,mol,ip,port,name,t.desc,maxAc,maxI,minI,maxW,status</sql> <!-- 查询列表 --> <select id="getTht" resultMap="BaseResultMap" parameterType=

使用solr的DIHandler 构建mysql大表全量索引,内存溢出问题的解决方法

solr官方给出的解决方式是: DataImportHandler is designed to stream row one-by-one. It passes a fetch size value (default: 500) to Statement#setFetchSize which some drivers do not honor. For MySQL, add batchSize property to dataSource configuration with value -1

mysql数据库表间内外链接详解

1. 内连接(自然连接) 2. 外连接 (1)左外连接 (左边的表不加限制)(2)右外连接(右边的表不加限制)(3)全外连接(左右两表都不加限制) 3. 自连接(同一张表内的连接) SQL的标准语法:select table1.column,table2.column from table1 [inner | left | right | full ] join table2 ontable1.column1 = table2.column2; inner join 表示内连接: left jo

MySQL数据库like查询中文出现不准确的解决方法

2013-02-18 1,502阅 评论( 暂无评论 ) 更多0 Mysql数据库like查询中文出现不准确的解决方法,中文检索有时候有点蛋疼,Mysql数据库like查询中文有时候会出现不准确.而且,在进行like检索时,有时候会返回一些与查询词不相关的记录,如查找 “%s%” 时,返回的结果中可能有中文字符,却没有s字符存在,这与数据库中文编码规则有关. 如希望查找title中含有字母s的所有新闻: select * from test.news where title like '%s%'

Python数据库操作 Mysql数据库表引擎与字符集#学习猿地

# Mysql数据库表引擎与字符集 ![](./imgs/752951346A5F4E7EBDE362FA97107707.png) ### 1.服务器处理客户端请求 其实不论客户端进程和服务器进程是采用哪种方式进行通信,最后实现的效果都是:**客户端进程向服务器进程发送一段文本(MySQL语句),服务器进程处理后再向客户端进程发送一段文本(处理结果).**那服务器进程对客户端进程发送的请求做了什么处理,才能产生最后的处理结果呢?客户端可以向服务器发送增删改查各类请求,我们这里以比较复杂的查询请

mysql数据库表操作及授权

表操作:增删改查 把/etc/passwd文件的内容导入 passwd表里. mysql>load data infile"/etc/passwd" into table passwd fields terminated by ":"; 基于前面的passwd表,完成下列操作: 1:列出uid低于500且3个字母的用户 mysql> select name from passwd where uid<500 and name like "

【初学菜鸟作-MySQL数据库表的基本操作与权限管理】

表基本操作练习 1 复制用户信息表user的所有记录到userdb表里. mysql> create table userdb select * fromuser; 2 查看userdb表的表结构 mysql> desc userdb; 3 删除userdb表的所有记录 mysql> delete from userdb 4 把name字段设置为index字段 mysql> create index name on userdb(name) 5 添加编号字段id  在所有字段上方,

解决openfire在使用MySQL数据库后的中文乱码问题(转)

openfire是一个非常不错的IM服务器,而且是纯Java实现,具有多个平台的版本,他的数据存储可以采用多种数据库,如MySQL,Oracle等. 在实际使用时大家遇到最多的就是采用MySQL数据库后的中文乱码问题,这个问题十分有趣,而且从现象上可以看出openfire内部的一些机制. 实际问题是这样的:首先启动openfire服务器,然后利用客户端或直接登录到后台新建一个帐户,为该帐户指定一些中文的属性,如姓名等.如果不重启服务器,你永远不会觉得有什么不对的地方,因为所有的中文显示都是正常的