仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 897|回复: 7
打印 上一主题 下一主题

[学习教程] 绝无经由的Mysql5写中文乱码成绩办理

[复制链接]
变相怪杰 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 20:14:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
而且其固有的弹性使得它易于扩展以处理不断增长的需求,或当需求MySQL学习教程减弱时缩减规模。我拔出MySQL5的中文一向是乱码。
可是间接利用mysqlAdmin,EMS等工具拔出DB就不是乱码。并且我还可使用程序一般地读出来。
缘故原由是:
DBDriverClass=com.mysql.jdbc.Driver
DBURL=jdbc:mysql://10.4.2.52:3306/srx?useUnicode=true&characterEncoding=utf-8
如许的URL中useUnicode=true和characterEncoding=utf-8两个属性都欠好用。
以是,数据库服务器没法从URL中获知Client利用了哪一个编码。因而就利用数据库服务器上默许的latin也就是iso-8859-1编码来剖析用户发送的sql语句。如许,底本用户是用操纵体系的编码,可是服务器硬给转成ISO-8859-1,以是就乱码了。
Client端只需设置好
useUnicode=true
characterEncoding=utf-8
这两个属性。只需指定了,就不会乱码。utf-8能够,gb2312能够,gbk能够。指定了甚么,Client就默许以这类
编码转换SQL语句,服务器也就晓得怎样转会往。

怎样看客户端发送给服务器的SQL利用甚么编码呢?
在客户端写个程序,实行SQL语句:
publicvoidselect()throwsSQLException{
ResultSetrs=this.cnn.createStatement().executeQuery("SHOWVARIABLESLIKEcharacter_set_%");
while(rs.next()){
System.out.PRintln(rs.getString(1)+","+rs.getString(2));
}
rs.close();
}
没有设置characterEncoding=utf-8之前,我利用的是DBURL=jdbc:mysql://10.4.2.52:3306/srx?useUnicode=true&characterEncoding=utf-8如许的设置。了局用select()办法查询了局以下:
character_set_client,latin1
character_set_connection,latin1
character_set_database,utf8
character_set_filesystem,binary
character_set_results,
character_set_server,latin1
character_set_system,utf8
character_sets_dir,/usr/local/mysql-standard-5.0.27-linux-i686/share/mysql/charsets/
注重第一行就能够了,可见利用的是latin1。
而latin1自己就没法暗示汉字,经由这个编码打包的SQL语句发给Server,Server也用Latin1剖析也没法复原。
以是,我老是写乱码到DB。
而设置了设置characterEncoding=utf-8以后,
实行select(),了局:
character_set_client,utf8
character_set_connection,utf8
character_set_database,utf8
character_set_filesystem,binary
character_set_results,
character_set_server,latin1
character_set_system,utf8
character_sets_dir,/usr/local/mysql-standard-5.0.27-linux-i686/share/mysql/charsets/
第一举动utf-8,SQL将用UTF8打包给Server,Server也用Client设置的UTF8
剖析。
通过支付一定费用,客户可以得到优先的24/7支持,访问内容丰富的在线知识库和联系一个专门的技术负责经理。
admin 该用户已被删除
沙发
发表于 2015-1-18 18:59:20 | 只看该作者
大家注意一点。如下面的例子:
只想知道 该用户已被删除
板凳
发表于 2015-1-27 19:10:09 | 只看该作者
是要和操作系统进行Socket通讯的场景。否则建议慎重!
活着的死人 该用户已被删除
地板
发表于 2015-2-12 10:08:11 | 只看该作者
如果你是从“学习某一种数据库应用软件,从而获得应聘的资本和工作机会”的角度来问的话。
小魔女 该用户已被删除
5#
发表于 2015-3-3 02:47:01 | 只看该作者
大家注意一点。如下面的例子:
金色的骷髅 该用户已被删除
6#
发表于 2015-3-11 09:21:49 | 只看该作者
理解了存储结构,再阅读下性能优化的章节基本上会对sqlserver有个清晰地认识
简单生活 该用户已被删除
7#
发表于 2015-3-18 05:39:34 | 只看该作者
代替了原来VB式的错误判断。比Oracle高级不少。
老尸 该用户已被删除
8#
发表于 2015-3-25 14:10:45 | 只看该作者
作了些试验,发现使用CLR的存储过程或函数在达到一定的阀值的时候,系统性能会呈指数级下滑!这是非常危险的!只使用几个可能没有问题,当一旦大规模使用会造成严重的系统性能问题!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-22 20:34

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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