MySql 查询语句中包含中文时不能查询结果 编码问题!
最近在做mysql查询时,发现一个很郁闷的问题:sql水土不服!

在公司内部做的mysql 查询,包含中文毫无问题。(mysql服务安装在公司,所用数据库编码设置成gbk,mysql安装设置编码为utf-8),项目运行一切OK。

但是 当把项目部署到客户的指定的服务器(可能是虚拟机)上 安装mysql服务 运行环境等,一切搞定后,发现只要有中文的查不出来数据。 没别的,肯定是编码问题,去修改安装配置文件,但是安装的是 mysql-5.1.53-win32, 结果目录下找不到my.ini 文件,找了一些ini 文件每一个包含default-character-set 属性设置这一项。

郁闷中,惆怅中,向各位同仁讨教,感激不尽。

9个回答

直接加my.ini文件,其他ini文件54

找这个SET NAMES gb2312

给你上网查了点东西希望能帮到你

MYSQL数据库存在着编码问题,主要体现在数据库里汉字会出现乱码,WEB页面汉字显示不正常。
归结起来只有一个原因:会出现编码的地方存在编码不一致。
WEB开发中:MYSQL编码主要会出现在五个地方:
1. mysql安装的默认编码(latin1)-在mysql.ini(mysql安装根目录下)中设置。[mysqld]选项,默认没有。添加即在最后一行加入default-character-set=utf8。
2.mysql数据库的编码,原则上默认的编码是mysql安装的默认编码,也可以在建库时用语句来执行:create databasedbname default character set utf8;我这里是建立一个utf8编码的dbname数据库。
3.mysql数据表的编码,原则上默认是第二步建立的数据库的编码。提倡不要在creat table时加上编码
4.利用程序建立mysql连接时,连接字符串使用的编码。如jdbc,php mysql_connect(),这个地方必须是与你页面的编码一致。
5.WEB程序页面的编码,charset=utf8;与4必须一致。
除上面5个地方外,另有一个不是编码者所能控制的,那就是浏览用户的浏览器的编码,一般是自动选择,就不列入了。

    上述五个地方,我所知道的保证不出现乱码的方法是:
1 无所谓,但是如果可以调整的话,可以设置成你所需要统一的一个编码,如utf8
2,3比较重要,我所理解的必须是一致。建议是在建库语句时带上编码,建表时就不指定编码了。
4是必须的,php下:$link = mysql_connect('localhost', 'root', '')   or die('Could not connect: ' . mysql_error());
                                     echo 'Connected successfully';
                        mysql_select_db('wordpress') or die('Could not select database');
                          mysql_query("set names utf8;");   //这句
              如利用PDO的话 $dbh = new PDO($dsn, $config['db']['username'], $config['db']['password']);
                                  $dbh->exec('SET CHARACTER SET utf8');  //这句
 5在WEB页面中必须设置成上面的统一的编码。

请不要结束,继续往下看:上述方法中必须统一是统一的编码,我使用的是utf8,为什么使用utf8是我正要说的。
备注说明
1、统一使用GBK编码的话,大多数时候是不会出问题。但是如果遇到·这种字符,这个字段后的所有汉字都回出现乱码。这在oracle中同样存在。因为mysql,oracle的默认编码似乎都是(mysql-latin1亦是)iso-8559-1,对某些特殊字符会出现乱码。因此建议使用utf8。使用utf8亦是我以前排斥的,但是在hiu遇到疯狂的小覃后改变了我的观点,utf8有利于建设网站的其它版本,比如英文版...,而且设置似乎也没有丝毫麻烦。。。
2、在上述的一个过程中,使用了mysql的gui管理工具(除去web形式的phpadmin)的,如果你出现了乱码问题,那是显然的。比如sqlyog, mysql 的 mysql administrator是有默认编码的。所以在建库,建表的时候尽量使用语句在工具里来执行,而不是直接右键来createdatabase。phpadmin不存在这个问题(它是web程序)。

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/twosecond/archive/2009/06/22/4289052.aspx

没有可以加的,我干过
安装版或解压缩版,如果没有my.ini配置文件你就加个,设置好编码重启mysql服务
登录服务器show variables like '%char% 看是否起了作用额'

贴下你加的文件

无视的意思,其他的ini文件不要改,加个my.ini就可以

其他文件动过没?如果其他文件没动过,加这句到my.ini试试
default-storage-engine = INNODB 加在[mysqld]下
数据库优化我不懂 看不出你这个文件有什么问题
只是没有设置引擎 default-storage-engine = INNODB 没记错的话这个是管事务的

[client]
default-character-set = GBK
[mysql]
default-character-set = GBK

[mysqld]
port = 3306
character-set-server = GBK
default-storage-engine = INNODB
max_connections = 100
max_allowed_packet = 16M

basedir=D:/services/mysql
datadir=D:/services/mysql/data

这个是我本地的一个解压缩版的,本来没有my.ini文件,我自己加上去的
这个文件没有调优什么的,我不懂那个,你改下路径放入你的mysql根目录,自己把原来的备份先,我这个不一定能搞定,只能试试

tomcat 启动日志多贴一点,光看这个只看出貌似定时任务有问题

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问