知识大全 JSP中使用request乱码问题的解决

Posted

篇首语:恢弘志士之气,不宜妄自菲薄。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 JSP中使用request乱码问题的解决相关的知识,希望对你有一定的参考价值。

JSP中使用request乱码问题的解决  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

     JSP显示中文有乱码怎么办 用request得到的用户输入的中文怎么是乱码 把汉字写到数据库怎么是乱码 等等一些关于汉字乱码的问题 其实这个问题很简单 管它汉字不汉字 还是日文 还是其他的什么双字节的语言 我们一律把它当作UTF 看待       (一)request中的双字节文字      我们来实现在整个应用程序中使用UTF 编码工作 之所以选择UTF 不仅仅之于上述原因 我们知道java的就是基于在UTF 之上的 所以我们选择UTF 应该没错首先把我们的 java jsp文件都用UTF 编码来保存 如果以前的没有用UTF 保存也无所谓 但是建议以后写的都用UTF 来保存       并在 jsp里面写:

以下是引用片段 <%@page contentType= text/; charset=UTF %>而不是 %@page contentType= text/; charset=UTF %       然后在web xml添加下面一段 以下是引用片段 <web app>   <filter>     <filter name>Set Character Encoding</filter name>     <filter class> redv projects eduadmin util filters SetCharacterEncodingFilter</filter class>     <init param>       <param name>encoding</param name>       <param value>UTF </param value>     </init param>   </filter>   <filter mapping>     <filter name>Set Character Encoding</filter name>     <url pattern>/*</url pattern>   </filter mapping> </web app>       其中 redv projects eduadmin util filters SetCharacterEncodingFilter的代码如下 package  redv projects eduadmin util filters; import java io IOException; import javax servlet Filter; import javax servlet FilterChain; import javax servlet FilterConfig; import javax servlet ServletException; import javax servlet ServletRequest; import javax servlet ServletResponse; import javax servlet UnavailableException; import javax servlet import javax servlet public class SetCharacterEncodingFilter     implements Filter    protected String encoding = null;   protected FilterConfig filterConfig = null;   protected boolean ignore = true;   public void destroy()      this encoding = null;     this filterConfig = null;      public void doFilter(ServletRequest request  ServletResponse response                        FilterChain chain) throws IOException  ServletException      // Conditionally select and set the character encoding to be used     if (ignore || (request getCharacterEncoding() == null))        String encoding = selectEncoding(request);       if (encoding != null)          request setCharacterEncoding(encoding);           //Overrides the name of the character encoding used in the body of this request  This method must be called prior to reading request parameters or reading input using getReader()                 // Pass control on to the next filter     chain doFilter(request  response);      public void init(FilterConfig filterConfig) throws ServletException      this filterConfig = filterConfig;     this encoding = filterConfig getInitParameter( encoding );     String value = filterConfig getInitParameter( ignore );     if (value == null)        this ignore = true;          else if (value equalsIgnoreCase( true ))        this ignore = true;          else if (value equalsIgnoreCase( yes ))        this ignore = true;          else        this ignore = false;           protected String selectEncoding(ServletRequest request)      return (this encoding);   

  这样 我们的request请求就是以UTT 编码的 在JSP程序中就可以使用 request getParameter( myKey )来直接得到UTF 编码的字符串了 而不需要像这样 new String(request getParameter( myKey ) getBytes( ISO ) GBK )来解决那些乱码了

   (二)数据库处理的双字节文字      另外一个 就是写入数据库的问题 我们知道我们在使用mysql的时候可以改用这样的url来处理汉字编码问题 jdbc:mysql://localhost: /upas?useUnicode=true& characterEncoding=gb 那么对于那些我们无法像mysql这样解决的怎么办呢?难道我们每次都这样写吗 ( lian )

import java sql *; Class forName( gjt mm mysql Driver ); Connection con = null; PreparedStatement pstmt = null; ResultSet rs = null; try    con = DriverManager getConnection( jdbc:mysql://localhost: /test   root   );   pstmt = con prepareStatement( SELECT f  f  FROM tbl  WHERE f  = ? AND f  = ? );   pstmt setString(  new String(f getBytes( GBK )   ISO );   pstmt setString(  new String(f getBytes( GBK )   ISO );   rs = pstmt executeQuery();   String f  f ;   while(rs next())      f  = new String(rs getString( ) getBytes( ISO )   GBK );     f  = new String(rs getString( ) getBytes( ISO )   GBK );    finally    //close resouces   

  其实我们完全可以这样写

import java sql *; import  redv sql encoding *; Class forName( gjt mm mysql Driver ); Connection con = null; PreparedStatement pstmt = null; ResultSet rs = null; try    con = DriverManager getConnection( jdbc:mysql://localhost: /test   root   );   //接管数据库连接实例   boolean coding = true;   EncodingConnection codingConnection = new EncodingConnection(con  coding   ISO   GBK );   //获得接管后的数据库连接实例 以后直接使用con已经是经过EncodingConnection重新包装过的实例   con = codingConnection getConnection();   pstmt = con prepareStatement( SELECT f  f  FROM tbl  WHERE f  = ? AND f  = ? );   pstmt setString(  f );   pstmt setString(  f );   rs = pstmt executeQuery();   String f  f ;   while(rs next())      f  = rs getString( );     f  = rs getString( );    finally    //close resouces    cha138/Article/program/Java/JSP/201311/19877

相关参考

知识大全 JSP+ MySQL中文乱码问题post提交乱码解决方案

JSP+MySQL中文乱码问题post提交乱码解决方案  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧

知识大全 如何解决JSP页面显示乱码问题[2]

如何解决JSP页面显示乱码问题[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &n

知识大全 如何解决JSP页面显示乱码问题[1]

如何解决JSP页面显示乱码问题[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &n

知识大全 关于jsp和servlet中的乱码问题

  在jsp和servlet的开发中今天自己做的一个小例子中出现了中文乱码问题用了许多方法发现还是解决不了最后我用了过滤器才算终结  此方法总结如下在jsp页面中使用<%@pagepageEnc

知识大全 JSP验证码大全之验证码使用与乱码解决

JSP验证码大全之验证码使用与乱码解决  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  本文中介绍

知识大全 如何解决html网页编码导致jsp页面乱码

  页面中这段不起眼的代码<metaequiv="ContentType"content="text/;charset=GBK">错把如果charset=GBK设置为charset=UTF

知识大全 如何解决JSP参数传递乱码

如何解决JSP参数传递乱码  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  计算机生于美国英语是他

知识大全 常见JSP中文乱码例子及其解决方法

常见JSP中文乱码例子及其解决方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  JSP开发应用

知识大全 JSP虚拟主机使用中的乱码问题

JSP虚拟主机使用中的乱码问题  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 JSP页面传值中文乱码的简单解决方法

JSP页面传值中文乱码的简单解决方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  源代码ajs