设为首页 收藏本站
查看: 560|回复: 0

[经验分享] 学习脚步--- 以MYSQL为数据库的程序中的乱码问题

[复制链接]

尚未签到

发表于 2016-10-20 02:33:02 | 显示全部楼层 |阅读模式
                             MYSQL为数据库的程序中的乱码问题
本人是初学者很多知识的总结还不完善,但是为了个人学习,所以进行了总结。有什么不对的请大家指教!
一、两种查看MYSQL编码的方式:
1status
         可以查看MYSQL对数据库默认的字符编码,use 某个数据库后,则显示这个数据库的编码
2. show variables like 'character\_set\_%';
     可以查看更详细的信息:
    character_set_server:设置服务器使用的字符集
character_set_client :设置客户端发送查询使用的字符集
character_set_connection :设置服务器需要将收到的查询串转换成的字符集
character_set_results :设置服务器要将结果数据转换到的字符集,转换后才发送给客户端
二、如何比较有效的避免乱码?
注意:要避免乱码,就要全面的进行预防,从MYSQL数据库的默认编码、命令操作的地方、建数据库设置、建表设置、程序设置。
1.在安装MYSQL数据库的时候不要一下子默认到底,要特别留心使用的字符编码,将其设置为UTF8(这个传说在实际中比GBK用的要多),省得以后麻烦。
2.可以在终端写create database aubergine character set utf8;建立数据库,但是,不建议在终端建表,尤其是向表中insert数据,因为从终端插入的数据和系统平台的编码有关,容易产生乱码。所以,1>传说程序员有个习惯,在向数据库插入数据的时候,是将建表、插入语句写入.sql文件中,然后在MYSQL的终端建立好数据库后source一下这个.sql文件;
那么,还有一种方法,2>使用MyEclipse开发的,可以在MyEclipse中建立数据库连接后,建立一个SQL EDITOR,将建表、插入语句写进去,点击绿色的三角运行。
3.剩下的就是写法上注意的了:----插入数据
1>打开MYSQL的终端,建立数据库,使用source命令往数据库中建表并插入数据
        create database aubergine default character set utf8;
        use aubergine;
        set names utf8;
        source E:/aubergine.sql;
        注意:查了一下资料说set names utf8;相当于下面的三条命令:
set character_set_client=utf8;
set character_set_connection=utf8;
set character_set_results=utf8;
            aubergine.sql中如何写来达到对表的字符编码的设置呢?
DROP  TABLE IF  EXISTS  kang;
CREATE  TABLE  kang (
id  int(12)  NOT  NULL  auto_increment,
order_id  int(10)  unsigned  NOT  NULL,
product_id  int(10) unsigned  NOT  NULL,
dang_price  double  NOT  NULL,
product_num  int(10) unsigned  NOT  NULL  default  '1',
amount  double  NOT  NULL,
PRIMARY  KEY  (id)
) ENGINE=InnoDB  DEFAULT  CHARSET=utf8;
设置数据库存储引擎默认的的数据库字符编码是utf8,这个就是对表进行的字符编码设置。
注:如果使用的MyEclipse中的DB Browser来插入数据,那么在写url的时候要写作:
jdbc:mysql://localhost:3306/aubergine?characterEncoding=utf8
 4.程序中的写法注意:
1>Jdbc连接数据库的时候在指定url的时候标注(由于是mysql数据库所以utf8之间没有横杠)
String url="jdbc:mysql://localhost:3306/auber?characterEncoding=gbk";
(如果使用utf-8编码  String url="jdbc:mysql://localhost:3306/auber?characterEncoding=utf8";)
2> request.setCharacterEncoding(utf-8)----------------------》可以使用过滤器来实现
3> <meta http-equiv="content-type" content="text/html;charset=gbk">
meta是用来在HTML文档中模拟HTTP协议的响应头报文。meta 标签用于网页的<head></head>中。
4> response.setContentType( "text/html;charset=UTF-8 ");//jsp代码处写的
5> <%@ page contentType="text/html;charset=GB2312" pageEncoding="GB2312"%>//jsp文件的头部写的
6>有时候method=”post”没错,可能get有错则:更改tomcat---àconfig--àserver.xml里面的编码(URLEncoder是个很好用的)
<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
改为
<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
redirectPort="8443"
urlencoding="utf-8"/>
补充:如果在安装MYSQL数据库的时候就是默认的Latin文怎么办?
mysql安装后的目录中找到my.ini文件,然后把里面的default-character-set=LATIAN改成default-character-set=GBK 或者是UTF-8
这个在你的电脑上存在其他项目的时候不建议使用,因为更改这个会影响到其他项目的编码。 
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-288438-1-1.html 上篇帖子: jira 4.0.1 war 方式的安装过程,使用mysql 下篇帖子: win7配置安装php 5.3.5 + mysql 5.1.51 + apache 2.2.17
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表