jsp乱码问题,求助
下了个几年前的jsp源码,我装上后一直有中文乱码问题,数据库我用mysql,
并用sql-front操作,在用sql-front的时候已把字符设置为gb2312,
而且在sql-front中能正确显示中文,但就是在jsp页面上用getstring方法
得到乱码,我也用过getbytes(iso-8859-1)等方法试过还是没有用。
<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" %>
<%@ page pageEncoding="gb2312" %>
这两条语句在jsp页面也都写了
求高人相助
最佳答案
把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 "";
0
回答者:匿名 2008-9-11 02:19
一、输出中文
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;
}