预览加载中,请您耐心等待几秒...
1/1

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

JSP显示中文有乱码怎么办,用requet得到的用户输入的中文怎么是乱码,把汉字写到数据库怎么是乱码,等等一些关于汉字乱码的问题。其实这个问题很简单,管它汉字不汉字,还是日文,还是其他的什么双字节的语言,我们一律把它当作UTF-8看待。(一)requet中的双字节文字我们来实现在整个应用程序中使用UTF-8编码工作,之所以选择UTF-8不仅仅之于上述原因,我们知道java的就是基于在UTF-8之上的,所以我们选择UTF-8应该没错首先把我们的.java,.jp文件都用UTF-8编码来保存,如果以前的没有用UTF-8保存也无所谓,但是建议以后写的都用UTF-8来保存。并在.jp里面写:这样,我们的requet请求就是以UTT-8编码的,在JSP程序中就可以使用:requet.getParameter("myKey")来直接得到UTF-8编码的字符串了,而不需要像这样:newString(requet.getParameter("myKey").getByte("ISO-8859-1"),"GBK")来解决那些乱码了。(二)数据库处理的双字节文字另外一个,就是写入数据库的问题,我们知道我们在使用myql的时候可以改用这样的url来处理汉字编码问题:jdbc:myql://localhot:3306/upaueUnicode=true&characterEncoding=gb2312,那么对于那些我们无法像myql这样解决的怎么办呢?难道我们每次都这样写吗:()importjava.ql.某;Cla.forName("org.gjt.mm.myql.Driver");Connectioncon=null;PreparedStatementptmt=null;ReultSetr=null;try{con=DriverManager.getConnection("jdbc:myql://localhot:3306/tet","root","");ptmt=con.prepareStatement("SELECTf3,f4FROMtbl1WHEREf1=ANDf2=");ptmt.etString(1,newString(f1.getByte("GBK"),"ISO-8859-1");ptmt.etString(2,newString(f2.getByte("GBK"),"ISO-8859-1");r=ptmt.e某ecuteQuery();Stringf3,f4;while(r.ne某t()){f3=newString(r.getString(1).getByte("ISO-8859-1"),"GBK");f4=newString(r.getString(2).getByte("ISO-8859-1"),"GBK");}}finally{//cloereouce...}其实我们完全可以这样写:看看,怎么样,我们只需要在获取数据库连接的地方稍微修改一下,甚至我们可以把它当作参数保存在propertie里面,改变coding的布尔值来设定是否使用自动编码转换。常常我们可以使用一个Databae类来封装获取数据库连接的那段getConnection,以便于我们可以从java某.ql.DataSource中获取到数据库连接。这个时候我们仅仅需要修改我们的Databae类即可,而不用去搜索所有使用了r.etString(),r.getString()的地方去加入我们的编码转换代码了。