变相怪杰 发表于 2015-1-16 20:14:13

绝无经由的Mysql5写中文乱码成绩办理

而且其固有的弹性使得它易于扩展以处理不断增长的需求,或当需求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

如果你是从“学习某一种数据库应用软件,从而获得应聘的资本和工作机会”的角度来问的话。

小魔女 发表于 2015-3-3 02:47:01

大家注意一点。如下面的例子:

金色的骷髅 发表于 2015-3-11 09:21:49

理解了存储结构,再阅读下性能优化的章节基本上会对sqlserver有个清晰地认识

简单生活 发表于 2015-3-18 05:39:34

代替了原来VB式的错误判断。比Oracle高级不少。

老尸 发表于 2015-3-25 14:10:45

作了些试验,发现使用CLR的存储过程或函数在达到一定的阀值的时候,系统性能会呈指数级下滑!这是非常危险的!只使用几个可能没有问题,当一旦大规模使用会造成严重的系统性能问题!
页: [1]
查看完整版本: 绝无经由的Mysql5写中文乱码成绩办理