以中文为查询条件查询mysql数据库时有数据却查不到数据或者中文乱码的问题

中文乱码或者有数据查不到数据这类问题,多数是因为编码不一致导致。

WEB开发中:MYSQL编码主要会出现在五个地方:

1、 mysql安装的默认编码(latin1)-在mysql.ini(mysql安装根目录下)中设置。[mysqld]选项,默认没有。添

加即在最后一行加入default-character-set=utf8。

2、mysql数据库的编码,原则上默认的编码是mysql安装的默认编码,也可以在建库时用语句来执行:create

database dbname 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是必须的,jdbc中设置如下:

String url = "jdbc:mysql://localhost:3306/usermanager?useUnicode=true&characterEncoding=UTF-8"; 

我遇到的以中文为查询条件查询mysql数据库时有数据却查不到数据的问题就是通过4中的方法解决的。

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


  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值