把存入数据库的汉字进行转换。
new String("汉字".getBytes("ISO8859-1"),"GB2312");
new String("汉字".getBytes("ISO8859-1"),"GB2312");
解决方案 »
- jsp:useBean
- 如何给图片加上批注
- 生成树形类
- 关于mysql关于jsp
- 用j2ee1.3的deploytool配置servlet,想用一个html调用一个servlet,没有成功,请教!!
- taglib编程问题
- 为什么JBuilder中的servlet包里没有javax.servlet.jsp.tagext.*
- linux 下如何进行调试, System.out.print打印到那里去了,麻烦各位老大了!
- 急!急!急!JAVA和JSP高手快来帮忙啊!谢谢了先!(关于连接mysql数据库问题)
- 用<c:forEach>遍历list的问题
- 谁能提供一个比较好的用JDBC连接数据库的Severlet类?
- 寻求向MSSQLServer数据库一次性修改、删除、插入大量数据的方案!!!
你看看jdbc驱动有没有变化?
throws UnsupportedEncodingException
{
String temp=s;
temp=new String(s.getBytes("GBK"),"ISO8859_1");
return temp;
}
//将GKB转换为Unicode的代码
2. public String UNI2GBK(String s)
throws UnsupportedEncodingException
{
String temp=s;
temp=new String(s.getBytes("ISO8859_1"),"GBK");
return temp;
}
//将Unicode转换为GKB的代码
上述两个函数都是用来解决Java中文显示问题的
Java的Java和Javac这两个命令在编译和运行Java程序时会检测系统字符集,然后按照系统字符集来对字符进行转换。例如:当在西文系统中运行Javac命令时,它所选用的encode的字符就是ISO8859_1,也就是说,它在编译时会见所有的ISO8859_1的字符串转换成Unicode,此时如果程序中有其他字符集的字符串,比如GKB的中文字串,则不做任何转换,仍然按照GKB的字符读入,而当它在西文平台下用Java运行时,又会将Unicode转换成ISO8859_1输出,并将GKB的字符正常输出。因此,在西文环境下,中文可以正常的输出。如果在中文系统中运行javac命令,则所有的GKB字符串会转换成Unicode,而所有的ISO8859_1的字符串会保留,同样在输出的时候也将Unicode转换GKB字符集,因此也可以正常显示。
那什么时候会出现中文乱码问题呢?在JDBC Driver里,有些Driver会对从数据库中读出的中文自动地转换成Unicode,而有些不会,如果Driver做过转化而系统又再做一次的话,就会出现问题,也就是常常见的??,这时,需要的就是在不同的平台下根据不同的情况去将数据库做得不需要的转换抵消。举个简单的例子,系统是西文平台,数据库的Driver做过GKB到Unicode的转换,这时候,程序中的中文字串在javac后仍然是GKB码,而从数据库中读进的中文已经做过转换,也就是变成了Unicode码,当用java去运行时就会将中文的Unicode转换到ISO8859_1,自然要出错。这时,就需要自己将从数据库重读出的数据做一个Unicode到GKB的转换,因此就可以正常输出了。所有的Java中文问题,都是因为这个原因,对于乱码的字符串,或者做Unicode到GKB,或者做GKB到Unicode,就可以正常显示了。
还得事先到入包
<%@page import="java.io.*"%>
是怎么回事呢?