JDBC查返回到页面中文乱码到MYSQL中,乱码了,怎么回事

Java写入mysql出现中文乱码
数据库中女神的名字乱码了?用的utf-8.
写下你的评论...
写下你的评论...
写下你的评论...
Copyright (C) 2018 imooc.com All Rights Reserved | 京ICP备 号-11Posts - 38,
Articles - 0,
Comments - 1
时光可以优雅地老去
10:51 by coffeescript, ... 阅读,
看到一篇很好的文章,转录于此
中文乱码似乎是程序编写中永恒的一个话题和难点,就比如MySQL存取中文乱码,但我想做任何事情,都要有个思路才行,有了思路才知道如何去解决问题,否则,即使一时解决了问题,但过后不久又碰到同样的问题可能又会急得抓狂,MySQL中文乱码问题就是如此。
仅仅对MySQL中文乱码的解决而言,我认为主要的一个原则可以归结为五个字:&编码一致性&,只要遵循了这个原则,那么中文乱码就不难解决,那么何为&编码一致性&呢?子猴总结为有如下四个方面的编码必须保持一致,才能防止中文的乱码,下面将具体讲解。
首先我要设定的编码为UTF8,为何要设定UTF8编码呢?那是因为这是通用编码,像中国通常使用的GBK、GB2312、Big5等只是针对中文而言,但是对其他文字就不适用了,为了使得这个问题的解决具有文字编码通用性,所以我这里设定了UTF8这个编码。
编码一致性涉及到的四个方面为:应用程序编码、数据库系统编码、数据库编码、应用程序与数据库系统的连接编码。
1、& 应用程序编码
指的是你在程序文件中的文字编码,以jsp文件为例来说明,就是你jsp的网页编码,比如:
&%@ page contentType="text/ charset=UTF-8" %&
在这样的页面中,往往是调用数据库接口对数据库进行存取操作。
2、& 与之对应的数据库系统编码
数据库系统就是你所用的MySQL(及其他数据库系统),数据库系统的编码要与应用程序编码一致,其编码设置根据操作系统的不同可以通过以下方式设置
2.1、Windosw环境下的MySQL编码设置
A、中止MySQL服务 B、在MySQL的安装目录下找到my.ini,如果没有就把my-medium.ini复制为一个my.ini即可 C、打开my.ini以后,在[client]和[mysqld]下面均加上default-character-set=utf8,保存并关闭 D、启动MySQL服务
(注:Windows环境下的设置我没有验证过)
2.2、Linux环境下的MySQL编码设置
首先我们登录到mysql,执行:show variables like &character%&;来查看数据库系统当前的编码方式,一般情况下,你会看到如下所示:
+&&&&&&&&&+&&&&&&&&&-+ | Variable_name | Value | +&&&&&&&&&+&&&&&&&&&-+ | character_set_client | latin1 | | character_set_connection | latin1 | | character_set_database | latin1 | | character_set_filesystem | binary | | character_set_results | latin1 | | character_set_server | latin1 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +&&&&&&&&&+&&&&&&&&&-+
也就是默认编码都是latin1,很显然,我们要修改为UTF8。
通过:vi /etc/mysql/my.cnf修改my.cnf文件,这里需要注意的是,如果my.cnf文件不存在,则进入到mysql的安装目录,通过执行:cp share/mysql/my-large.cnf /etc/my.cnf生成my.cnf文件。
加入的内容如下:
在客户端配置[client]下面添加:
### 默认字符集为utf8 default-character-set=utf8
找到[mysqld]部分,在下面添加:
### 默认字符集为utf8 default-character-set=utf8 ### (设定连接mysql数据库时使用utf8编码,以让mysql数据库为utf8运行) init_connect=&SET NAMES utf8&
完毕后重启mysql服务,然后再通过执行show variables like &character%&;查看如下:
mysql& show variables like &character%&;
+&&&&&&&&&+&&&&&&&&&-+
| Variable_name&&&&&&&&&&& | Value&&&&&&&&&&&&&&&&&&&&& |
+&&&&&&&&&+&&&&&&&&&-+
| character_set_client&&&& | utf8&&&&&&&&&&&&&&&&&&&&&& |
| character_set_connection | utf8&&&&&&&&&&&&&&&&&&&&&& |
| character_set_database&& | utf8&&&&&&&&&&&&&&&&&&&&&& |
| character_set_filesystem | binary&&&&&&&&&&&&&&&&&&&& |
| character_set_results&&& | utf8&&&&&&&&&&&&&&&&&&&&&& |
| character_set_server&&&& | utf8&&&&&&&&&&&&&&&&&&&&&& |
| character_set_system &&&&| utf8&&&&&&&&&&&&&&&&&&&&&& |
| character_sets_dir&&&&&& | /usr/share/mysql/charsets/ |
+&&&&&&&&&+&&&&&&&&&-+
3、& 数据库编码
改完数据库系统编码后,接下来轮到数据库编码了,请注意数据库系统与数据库的区别,数据库指的是你所创建的数据库Database及所包含的表,数据库编码设置很简单,在创建数据表的时候设置,举例如下:
create table Test
ID&&&&&&&&&&&&&&&&&& integer not null auto_increment,
NAME&&&&&&&&&&&&&&&& varchar(50) comment &测试字段&,
TYPE&&&&&&&&&&&&&&&& integer,
primary key (ID)
default charset utf8;
其中default charset utf8就表示此表的字符编码为utf8。
4、& 应用程序与数据库系统的连接编码
连接编码相当于应用程序与数据库系统的沟通桥梁,同样也需要设置编码,我们以JDBC的连接语句来予以说明:
jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8&user=test&password=111
上面的语句中为一个test的数据库,用户名为test,密码为111的数据库连接,其编码为characterEncoding=UTF-8。
通过以上四个方面的设置,那么mysql的中文乱码就轻松解决了!
如果你过段时间不记得mysql的中文乱码是如何解决的,那么你只要知道以上的解决思路,我想解决起来肯定会很快的。
如果这一切都设置无误,就要思考程序本身的问题了,如果页面传入数据库本身的就是乱码,那么就是程序的问题了,仔细核对,果然,问题出现在Servlet的处理上,添加以下语句问题成功解决。
req.setCharacterEncoding("utf-8");用JDBC向数据库中插入数据时,为何有时中文字符会显示为乱码?用JDBC向数据库中插入数据时,为何有时中文字符会显示为乱码?火锅成成百家号想要斯坦福大学编程资料的可以直接私聊小编,我就不在头条发表了乱码问题似乎在中国人编程的时候特别多,且容易出现,原因就在与我们编程所用的语言和编译器是外国人开发的,而我们的环境的字符编码和外国开发者的编码不一样,这就容易出现编码问题,编码问题是一个相对恶心的问题,所以个人认为要想完整解决这个问题,应该从编码的历史来了解一下,可以去搜索引擎查找,这里就不在多说了。乱码?这个问题的实现其实通常与各个JDBC driver的实现有关. 因为大多数采用本地编码格式来传输中文字符,我们需要对driver返回的字符同时我们要对要发给driver的字符进行转换. ,只有这样才能保证乱码不在出现。转换的实现:  当向数据库中插入数据时,首先是Unicode转native code,这是第一步的操作,然后JDBC driver从数据库查数据时,则将native code转换成Unicode,这是第二部的操作,这样的话即实现了代码的转换。当然,除使用以上方法之外,也可以采用对dbc driver Manager设置正确的字符集的属性,这样的话以上2个方法就不需要了,还是建议大家去了解一下比如ascii码表等等一些编码表,一个字节占几位等,只有这样才能更好应用。每天分享软件,电脑,远程控制软件。禁止百家号转载。本文由百家号作者上传并发布,百家号仅提供信息发布平台。文章仅代表作者个人观点,不代表百度立场。未经作者许可,不得转载。火锅成成百家号最近更新:简介:喧嚣尘世间,一个孤独的说书人。作者最新文章相关文章jdbc插入mysql数据库记录中文乱码,你们的的eclipse的字符集和数据库字符集是怎样的
浏览 455回答 1
随时随地看视频【急求】关于MySql和jdbc连接中文乱码,已经凌乱了。
[问题点数:60分]
【急求】关于MySql和jdbc连接中文乱码,已经凌乱了。
[问题点数:60分]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2016年1月 Java大版内专家分月排行榜第二2015年12月 Java大版内专家分月排行榜第二2015年8月 Java大版内专家分月排行榜第二2015年3月 Java大版内专家分月排行榜第二2015年1月 Java大版内专家分月排行榜第二2014年12月 Java大版内专家分月排行榜第二2014年11月 Java大版内专家分月排行榜第二2014年6月 Java大版内专家分月排行榜第二2014年4月 Java大版内专家分月排行榜第二2014年1月 Java大版内专家分月排行榜第二2013年11月 Java大版内专家分月排行榜第二
2015年9月 Java大版内专家分月排行榜第三2015年6月 Java大版内专家分月排行榜第三2015年5月 Java大版内专家分月排行榜第三2015年2月 Java大版内专家分月排行榜第三2014年3月 Java大版内专家分月排行榜第三2013年12月 Java大版内专家分月排行榜第三
2013年10月 总版技术专家分月排行榜第三
2014年3月 Java大版内专家分月排行榜第一2014年1月 Java大版内专家分月排行榜第一2013年12月 Java大版内专家分月排行榜第一2013年11月 Java大版内专家分月排行榜第一2013年10月 Java大版内专家分月排行榜第一
2013年10月 总版技术专家分月排行榜第三
2014年3月 Java大版内专家分月排行榜第一2014年1月 Java大版内专家分月排行榜第一2013年12月 Java大版内专家分月排行榜第一2013年11月 Java大版内专家分月排行榜第一2013年10月 Java大版内专家分月排行榜第一
2014年12月 扩充话题大版内专家分月排行榜第二
匿名用户不能发表回复!|

我要回帖

更多关于 curl收到的中文乱码 的文章

 

随机推荐