java乱码问题

一、输出中文

1 JSP页面头部加上语句:<%@page contentType="text/html;charset=utf-8"%>

2 Sevlet中:response.setContentType("text/html;charset=utf-8");

二、获取表单数据

可以在每次获取的时候使用:

str=request.getParameter("chStr");

str=new String(str.getBytes("ISO-8859-1"),"utf-8");

但是这种方式很繁琐,如果需要获取的中文比较多,就不太可行。可以考虑使用Filter。

在%TOMCAT%/webapps/servlets-examples/Web-INF/classes/filters目录下,有一个完整的例子,可以将SetCharacterEncodingFilter.class拷贝到自己应用中,并设置web.xml

<filter>

   <filter-name>Set Character Encoding</filter-name>

   <Filter-class>SetCharacterEncodingFilter</filter-class>

   <init-param>

        <param-name>encoding</param-name>

        <param-value>UTF-8</param-value>

</init-param>

</filter>

<filter-mapping>

      <filter-name>Set Character Encoding</filter-name>

     <url-pattern>/*</url-pattern>

</filter-mapping>

三、URL中的中文

在Tomcat安装目录下的/conf/server.xml,找到Connector,添加URIEncoding="utf-8":

<Connector port="80" redirectPort="8443" minSpareThreads="25" connectionTimeout="20000" maxSpareThreads="75" maxThreads="150" URIEncoding="utf-8"/>

四、数据库中的中文

1 如果是自己建立的表,将表的编码方式设为utf-8

2 连接字符串

a)JDBC方式

jdbc://mysql://host:port/dbname?user=username&password=pwd&useUnicode=true&character Encoding=utf-8

b) 数据源方式

<parameter>

<name>url</name>

<value>

jdbc://mysql://host:port/dbname?useUnicode=true&character Encoding=utf-8

</value>

</parameter>

3) 已存在的ISO-8859-1编码方式的数据库

a)在JDBC连接字符串中设置useUnicode=true&character Encoding=ISO-8859-1可以顺利写入数据库

b)读取时只能依靠转换

public String charConvert(String srcStr){

String result=null;

if(srcStr!=null){

     try{

            result=new String(srcStr.getBytes("ISO-8859-1"),"utf-8");

        }catch(Exception e){

            result=null;

       }

}

retrun result;

}

你可能感兴趣的:(java,tomcat,mysql,Web,jdbc)