首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > Mysql >

MySQL中的字符集涵义及使用方法小结(二)

2012-10-05 
MySQL中的字符集涵义及使用方法总结(二)五.乱码的避免最好让上述9个字符集变量值保持一致,或者至少“兼容”,

MySQL中的字符集涵义及使用方法总结(二)

五.乱码的避免
最好让上述9个字符集变量值保持一致,或者至少“兼容”,同时也要考虑到OS中locale的值。
当然:character_set_system例外,它是存储和表示元信息使用的字符集,一般都是ascii串,使用utf8和使用latin1基本一样,但是,如果使用中文,可能就另当别论了。下边说的全部变量是指除了character_set_system以外的其它变量。

这里推荐三个方案:
1. 全部使用latin1
但是在java程序中,它担着一定的风险,即在入库之前,需要将字符串从gbk转换到iso8859_1,出库以后,获取结果时,再从iso8859_1转到gbk.
否则会出现乱码。
这种方式比较适合于C代码,显示依赖于操作系统的locale.一般都不用转换。

2. 全中文支持,全部设置成gbk.
方法:
在my.ini中修改添加:(这个是必须的)
[mysqld]
default-character-set=gbk
在java程序里边使用"jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=GBK"这样的url,表明使用GBK进行编码。

3. utf8字符集支持.
方法:
在my.ini中修改添加:
[mysqld]
default-character-set=utf8
在java程序里边使用"jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8"这样的url,表明使用GBK进行编码。
注意utf8与UTF-8的分别.
utf8的好处是java虚拟机可以自动将它与gbk进行转换,因而显示都不会有乱码。可是在控制台下(cmd),显示就有问题了。

六.使用java代码显示字符集变量及测试字符集的显示
因为只是作测试用,所以没加修饰。测试时,只需要按照上述三个方法修改字符集即可。

MySQL中的字符集涵义及使用方法小结(二)importjava.sql.*;
MySQL中的字符集涵义及使用方法小结(二)
MySQL中的字符集涵义及使用方法小结(二)MySQL中的字符集涵义及使用方法小结(二)/***//**
MySQL中的字符集涵义及使用方法小结(二)*<p>Title:</p>
MySQL中的字符集涵义及使用方法小结(二)*
MySQL中的字符集涵义及使用方法小结(二)*<p>Description:</p>
MySQL中的字符集涵义及使用方法小结(二)*
MySQL中的字符集涵义及使用方法小结(二)*<p>Copyright:Copyright(c)2006</p>
MySQL中的字符集涵义及使用方法小结(二)*
MySQL中的字符集涵义及使用方法小结(二)*<p>Company:</p>
MySQL中的字符集涵义及使用方法小结(二)*
MySQL中的字符集涵义及使用方法小结(二)*@authornotattributable
MySQL中的字符集涵义及使用方法小结(二)*@version1.0
MySQL中的字符集涵义及使用方法小结(二)*/
MySQL中的字符集涵义及使用方法小结(二)MySQL中的字符集涵义及使用方法小结(二)publicclassTestCharset...{
MySQL中的字符集涵义及使用方法小结(二)Stringusername="root";
MySQL中的字符集涵义及使用方法小结(二)Stringpasswd="";
MySQL中的字符集涵义及使用方法小结(二)Connectionconn=null;
MySQL中的字符集涵义及使用方法小结(二)Stringcharset=null;
MySQL中的字符集涵义及使用方法小结(二)MySQL中的字符集涵义及使用方法小结(二)publicTestCharset()...{
MySQL中的字符集涵义及使用方法小结(二)}
MySQL中的字符集涵义及使用方法小结(二)
MySQL中的字符集涵义及使用方法小结(二)MySQL中的字符集涵义及使用方法小结(二)publicvoidconnect()throwsSQLException,ClassNotFoundException...{
MySQL中的字符集涵义及使用方法小结(二)Class.forName("com.mysql.jdbc.Driver");
MySQL中的字符集涵义及使用方法小结(二)Stringurl="jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8";
MySQL中的字符集涵义及使用方法小结(二)conn=DriverManager.getConnection(url,username,passwd);
MySQL中的字符集涵义及使用方法小结(二)charset=url.substring(url.lastIndexOf("=")+1);
MySQL中的字符集涵义及使用方法小结(二)}
MySQL中的字符集涵义及使用方法小结(二)
MySQL中的字符集涵义及使用方法小结(二)MySQL中的字符集涵义及使用方法小结(二)publicvoidgetCharset()throwsSQLException...{
MySQL中的字符集涵义及使用方法小结(二)Statementstmt=conn.createStatement();
MySQL中的字符集涵义及使用方法小结(二)System.out.println("=======showvariableslike'chara%'========");
MySQL中的字符集涵义及使用方法小结(二)ResultSetrset=stmt.executeQuery("showvariableslike'chara%'");
MySQL中的字符集涵义及使用方法小结(二)MySQL中的字符集涵义及使用方法小结(二)while(rset.next())...{
MySQL中的字符集涵义及使用方法小结(二)System.out.println(rset.getString(1)+"------>"+rset.getString(2));
MySQL中的字符集涵义及使用方法小结(二)}
MySQL中的字符集涵义及使用方法小结(二)rset.close();
MySQL中的字符集涵义及使用方法小结(二)System.out.println("=======showvariableslike'collation%'========");
MySQL中的字符集涵义及使用方法小结(二)rset=stmt.executeQuery("showvariableslike'collation%'");
MySQL中的字符集涵义及使用方法小结(二)MySQL中的字符集涵义及使用方法小结(二)while(rset.next())...{
MySQL中的字符集涵义及使用方法小结(二)System.out.println(rset.getString(1)+"------>"+rset.getString(2));
MySQL中的字符集涵义及使用方法小结(二)}
MySQL中的字符集涵义及使用方法小结(二)rset.close();
MySQL中的字符集涵义及使用方法小结(二)stmt.close();
MySQL中的字符集涵义及使用方法小结(二)}
MySQL中的字符集涵义及使用方法小结(二)
MySQL中的字符集涵义及使用方法小结(二)MySQL中的字符集涵义及使用方法小结(二)publicvoidtestGetValuesISO8859_1()throwsException...{
MySQL中的字符集涵义及使用方法小结(二)Statementstmt=conn.createStatement();
MySQL中的字符集涵义及使用方法小结(二)MySQL中的字符集涵义及使用方法小结(二)try...{
MySQL中的字符集涵义及使用方法小结(二)stmt.executeUpdate("droptablet12345");
MySQL中的字符集涵义及使用方法小结(二)MySQL中的字符集涵义及使用方法小结(二)}catch(Exceptione)...{
MySQL中的字符集涵义及使用方法小结(二)
MySQL中的字符集涵义及使用方法小结(二)}
MySQL中的字符集涵义及使用方法小结(二)stmt.executeUpdate("createtablet12345(idintprimarykey,namevarchar(32))");
MySQL中的字符集涵义及使用方法小结(二)Stringsz=newString("中文".getBytes("gbk"),"ISO8859_1");
MySQL中的字符集涵义及使用方法小结(二)stmt.executeUpdate("insertintot12345values(1,'"+sz+"')");
MySQL中的字符集涵义及使用方法小结(二)ResultSetrset=stmt.executeQuery("select*fromt12345");
MySQL中的字符集涵义及使用方法小结(二)rset.next();
MySQL中的字符集涵义及使用方法小结(二)System.out.println("测试中文值:"+newString(rset.getString(2).getBytes("ISO8859_1"),"GBK"));
MySQL中的字符集涵义及使用方法小结(二)rset.close();
MySQL中的字符集涵义及使用方法小结(二)
MySQL中的字符集涵义及使用方法小结(二)stmt.close();
MySQL中的字符集涵义及使用方法小结(二)}
MySQL中的字符集涵义及使用方法小结(二)MySQL中的字符集涵义及使用方法小结(二)publicvoidtestGetValuesGBK()throwsException...{
MySQL中的字符集涵义及使用方法小结(二)Statementstmt=conn.createStatement();
MySQL中的字符集涵义及使用方法小结(二)MySQL中的字符集涵义及使用方法小结(二)try...{
MySQL中的字符集涵义及使用方法小结(二)stmt.executeUpdate("droptablet12345");
MySQL中的字符集涵义及使用方法小结(二)MySQL中的字符集涵义及使用方法小结(二)}catch(Exceptione)...{
MySQL中的字符集涵义及使用方法小结(二)
MySQL中的字符集涵义及使用方法小结(二)}
MySQL中的字符集涵义及使用方法小结(二)stmt.executeUpdate("createtablet12345(idintprimarykey,namevarchar(32))");
MySQL中的字符集涵义及使用方法小结(二)stmt.executeUpdate("insertintot12345values(1,'中文')");
MySQL中的字符集涵义及使用方法小结(二)ResultSetrset=stmt.executeQuery("select*fromt12345");
MySQL中的字符集涵义及使用方法小结(二)rset.next();
MySQL中的字符集涵义及使用方法小结(二)System.out.println("测试中文值:"+rset.getString(2));
MySQL中的字符集涵义及使用方法小结(二)rset.close();
MySQL中的字符集涵义及使用方法小结(二)
MySQL中的字符集涵义及使用方法小结(二)stmt.close();
MySQL中的字符集涵义及使用方法小结(二)}
MySQL中的字符集涵义及使用方法小结(二)MySQL中的字符集涵义及使用方法小结(二)publicvoidtestGetValuesUTF8()throwsException...{
MySQL中的字符集涵义及使用方法小结(二)Statementstmt=conn.createStatement();
MySQL中的字符集涵义及使用方法小结(二)MySQL中的字符集涵义及使用方法小结(二)try...{
MySQL中的字符集涵义及使用方法小结(二)stmt.executeUpdate("droptablet12345");
MySQL中的字符集涵义及使用方法小结(二)MySQL中的字符集涵义及使用方法小结(二)}catch(Exceptione)...{
MySQL中的字符集涵义及使用方法小结(二)
MySQL中的字符集涵义及使用方法小结(二)}
MySQL中的字符集涵义及使用方法小结(二)stmt.executeUpdate("createtablet12345(idintprimarykey,namevarchar(32))");
MySQL中的字符集涵义及使用方法小结(二)//Stringsz=newString("中文".getBytes("gbk"),"UTF8");
MySQL中的字符集涵义及使用方法小结(二)stmt.executeUpdate("insertintot12345values(1,'中文')");
MySQL中的字符集涵义及使用方法小结(二)ResultSetrset=stmt.executeQuery("select*fromt12345");
MySQL中的字符集涵义及使用方法小结(二)rset.next();
MySQL中的字符集涵义及使用方法小结(二)System.out.println("测试中文值:"+rset.getString(2));
MySQL中的字符集涵义及使用方法小结(二)rset.close();
MySQL中的字符集涵义及使用方法小结(二)
MySQL中的字符集涵义及使用方法小结(二)stmt.close();
MySQL中的字符集涵义及使用方法小结(二)}
MySQL中的字符集涵义及使用方法小结(二)MySQL中的字符集涵义及使用方法小结(二)publicvoiddisconnect()throwsSQLException...{
MySQL中的字符集涵义及使用方法小结(二)if(conn!=null)conn.close();
MySQL中的字符集涵义及使用方法小结(二)}
MySQL中的字符集涵义及使用方法小结(二)MySQL中的字符集涵义及使用方法小结(二)publicstaticvoidmain(String[]args)...{
MySQL中的字符集涵义及使用方法小结(二)TestCharsett=newTestCharset();
MySQL中的字符集涵义及使用方法小结(二)MySQL中的字符集涵义及使用方法小结(二)try...{
MySQL中的字符集涵义及使用方法小结(二)t.connect();
MySQL中的字符集涵义及使用方法小结(二)t.getCharset();
MySQL中的字符集涵义及使用方法小结(二)if(t.charset.equals("ISO8859_1"))
MySQL中的字符集涵义及使用方法小结(二)t.testGetValuesISO8859_1();
MySQL中的字符集涵义及使用方法小结(二)elseif(t.charset.equals("GBK"))
MySQL中的字符集涵义及使用方法小结(二)t.testGetValuesGBK();
MySQL中的字符集涵义及使用方法小结(二)elseif(t.charset.equals("UTF-8"))
MySQL中的字符集涵义及使用方法小结(二)t.testGetValuesUTF8();
MySQL中的字符集涵义及使用方法小结(二)MySQL中的字符集涵义及使用方法小结(二)}catch(Exceptione)...{
MySQL中的字符集涵义及使用方法小结(二)//System.out.println(e.getMessage());
MySQL中的字符集涵义及使用方法小结(二)e.printStackTrace();
MySQL中的字符集涵义及使用方法小结(二)MySQL中的字符集涵义及使用方法小结(二)}finally...{
MySQL中的字符集涵义及使用方法小结(二)MySQL中的字符集涵义及使用方法小结(二)try...{
MySQL中的字符集涵义及使用方法小结(二)t.disconnect();
MySQL中的字符集涵义及使用方法小结(二)MySQL中的字符集涵义及使用方法小结(二)}catch(Exceptione2)...{
MySQL中的字符集涵义及使用方法小结(二)}
MySQL中的字符集涵义及使用方法小结(二)}
MySQL中的字符集涵义及使用方法小结(二)}
MySQL中的字符集涵义及使用方法小结(二)}


有什么问题,欢迎来讨论。

热点排行