|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
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支持,访问内容丰富的在线知识库和联系一个专门的技术负责经理。 |
|