|
![]() |
名片设计 CorelDRAW Illustrator AuotoCAD Painter 其他软件 Photoshop Fireworks Flash |
|
大家在JSP的开发过程中,常常出现中文乱码的问题,可能一至困扰着您,我现在把我在JSP开发中碰到的中文乱码的问题及解决办法写出来供大家参考。 一、JSP页面显示乱码 下面的显示页面(display.jsp)就出现乱码: <html> <head> <title>JSP的中文处理</title> <meta http-equiv=\"Content-Type\" content=\"text/html; charset=gb2312\"> </head> <body> <% out.print(\"JSP的中文处理\"); %> </body> </html> 对不同的WEB服务器和不同的JDK版本,处理结果就不相同。原因:服务器使用的编码方法不同和浏览器对不同的字符显示结果不同而导致的。解决办法:在JSP页面中指定编码方法(gb2312),即在页面的第一行加上:<%@ page contentType=\"text/html; charset=gb2312\"%>,就可以消除乱码了。完整页面如下: <%@ page contentType=\"text/html; charset=gb2312\"%> <html> <head> <title>JSP的中文处理</title> <meta http-equiv=\"Content-Type\" content=\"text/html; charset=gb2312\"> </head> <body> <% out.print(\"JSP的中文处理\"); %> </body> </html> 二、表单提交中文时出现乱码 下面是一个提交页面(submit.jsp),代码如下: <html> <head> <title>JSP的中文处理</title> <meta http-equiv=\"Content-Type\" content=\"text/html; charset=gb2312\"> </head> <body> <form name=\"form1\" method=\"post\" action=\"process.jsp\"> <div align=\"center\"> <input type=\"text\" name=\"name\"> <input type=\"submit\" name=\"Submit\" value=\"Submit\"> </div> </form> </body> </html> 下面是处理页面(process.jsp)代码: <%@ page contentType=\"text/html; charset=gb2312\"%> <html> <head> <title>JSP的中文处理</title> <meta http-equiv=\"Content-Type\" content=\"text/html; charset=gb2312\"> </head> <body> <%=request.getParameter(\"name\")%> </body> </html> 假如submit.jsp提交英文字符能准确显示,假如提交中文时就会出现乱码。原因:浏览器默认使用UTF-8编码方法来发送哀求,而UTF-8和GB2312编码方法表示字符时不相同,这样就出现了不能识别字符。解决办法:通过request.seCharacterEncoding(\"gb2312\")对哀求进行统一编码,就实现了中文的正常显示。修改后的process.jsp代码如下: <%@ page contentType=\"text/html; charset=gb2312\"%> <% request.seCharacterEncoding(\"gb2312\"); %> <html> <head> <title>JSP的中文处理</title> <meta http-equiv=\"Content-Type\" content=\"text/html; charset=gb2312\"> </head> <body> <%=request.getParameter(\"name\")%> </body> </html> 三、数据库连接出现乱码 只要涉及中文的地方全部是乱码,解决办法:在数据库的数据库URL中加上useUnicode=true&characterEncoding=GBK就OK了。 四、数据库的显示乱码 在mysql4.1.0中,varchar类型,text类型就会出现中文乱码,对于varchar类型把它设为binary属性就可以解决中文问题,对于text类型就要用一个编码转变类来处理,实现如下: public class Convert { /** 把ISO-8859-1码转变成GB2312 */ public static String ISOtoGB(String iso){ String gb; try{ if(iso.equals(\"\") || iso == null){ return \"\"; } else{ iso = iso.trim(); gb = new String(iso.getBytes(\"ISO-8859-1\"),\"GB2312\"); return gb; } } catch(Exception e){ System.err.print(\"编码转变错误:\"+e.getMessage()); return \"\"; } } } 把它编译成class,就可以调用Convert类的静态方式ISOtoGB()来转变编码。 返回类别: 教程 上一教程: Struts资源文件支持中文之第一招---掏肠换肚 下一教程: Java同步机制浅谈――synchronized对代码作何影响? 您可以阅读与"JAVA中文问题解决总结"相关的教程: · PHP和JAVA的XML-RPC中文问题解决办法 · MYSQL5.0中文问题及JDBC数据库连接和JSP汉字编码问题解决方式总结 · Java 中文问题的解决 · Java中文问题及最优解决方式 · webwork2在weblogic下的中文问题解决 |
![]() ![]() |
快精灵印艺坊 版权所有 |
首页![]() ![]() ![]() ![]() ![]() ![]() ![]() |