十分火急,用Microsoft SQL Server 2000 JDBC连接数据库的方法,显示汉字出现乱码?
用Microsoft SQL Server 2000 JDBC连接数据库的方法,查询数据出现乱码,而用JDBC-Odbc桥连接时,确没有?为什么呀。 问题点数:20、回复次数:3Top
1 楼kmonkey(家里有只老鼠就是我)回复于 2001-12-19 14:03:10 得分 0
我也一样出现这个情况,怎么没有高手来回答呢?
http://www.csdn.net/expert/topic/428/428283.shtmTop
2 楼ycats(加菲猫)回复于 2001-12-19 14:28:43 得分 10
流行的关系数据库系统都支持数据库 encoding,也就是说在创建数据库时可以指定它自己的字符集设置,数据库的数据以指定的编码形式存储。当应用程序访问数据时,在入口和出口处都会有 encoding 转换。 对于中文数据,数据库字符编码的设置应当保证数据的完整性. GB2312,GBK,UTF-8 等都是可选的数据库 encoding;也可以选择 ISO8859-1 (8-bit),那么应用程序在写数据之前须将 16Bit 的一个汉字或 Unicode 拆分成两个 8-bit 的字符,读数据之后则需将两个字节合并起来,同时还要判别其中的 SBCS 字符。没有充分利用数据库 encoding 的作用,反而增加了编程的复杂度,ISO8859-1不是推荐的数据库 encoding。JSP/Servlet编程时,可以先用数据库管理系统提供的管理功能检查其中的中文数据是否正确。
然后应当注意的是读出来的数据的 encoding,JAVA 程序中一般得到的是 Unicode。写数据时则相反。
Top
3 楼ycats(加菲猫)回复于 2001-12-19 14:29:31 得分 10
附一个用于从数据库和网络中取出中文乱码的处理函数,入参是有问题的字符串,出参是问题已经解决了的字符串。
String parseChinese(String in)
{
String s = null;
byte temp [];
if (in == null)
{
System.out.println("Warn:Chinese null founded!");
return new String("");
}
try
{
temp=in.getBytes("iso-8859-1");
s = new String(temp);
}
catch(UnsupportedEncodingException e)
{
System.out.println (e.toString());
}
return s;
}
Top




