问个JSP乱码的问题,快搞死偶了。
偶用 MSSQL_sp4 + tomcat5.028
jsp页面向数据库中添加数据,数据库中中文显示?????
希望遇到过此问题的朋友帮帮偶。谢谢了。
我尝试用过:
1.
-------------------------------------
<%@ page contentType= "text/html; charset=gb2312 " language= "java " %>
2.
-------------------------------------
<%
request.setCharacterEncoding( "GB2312 ") ;
%>
3.过滤器
-------------------------------------
package cn.com.minority.filter ;
import java.io.* ;
import javax.servlet.* ;
public class EncodingFilter implements Filter
{
public void init(FilterConfig filterConfig)
throws ServletException
{
}
public void doFilter(ServletRequest request,
ServletResponse response,
FilterChain chain)
throws IOException,
ServletException
{
try
{
request.setCharacterEncoding( "GB2312 ") ;
}
catch (Exception e)
{
}
chain.doFilter(request,response) ;
}
public void destroy()
{
}
};
/*
下面是在web.xml中配置。
<filter>
<filter-name> EncodingFilter </filter-name>
<filter-class> cn.com.minority.filter.EncodingFilter </filter-class>
</filter>
<filter-mapping>
<filter-name> EncodingFilter </filter-name>
<url-pattern> /* </url-pattern>
</filter-mapping>
*/
[解决办法]
同样的问题没人解决!
[解决办法]
和你的数据库字符集有关系的
[解决办法]
将你的数据库也设置成支持GB2312的估计就行了
[解决办法]
连接数据库的时候设置一个
private static String url= "jdbc:mysql://localhost/teach?user=root&password=stb&useUnicode=true&characterEncoding=gb2312 ";
characterEncoding=gb2312设置一下,看可以不
mssql不用转码 转码反而容易出现乱码
[解决办法]
楼上的楼主用的是 MS SQL Server!!!
过滤器上再加上,response.setCharacterEncoding( "gb2312 ");
第2个似乎没有必要了。
你可以在插入数据库前把这些数据输出到控制台上来看看是否是“??”。
[解决办法]
以上这些方法只适用于 post 方式提交的数据,get 方式提交的需要更改 Tomcat 的 server.xml,其中有两个 Connector 元素,加上 URIEncoding 属性,值设为 "gb2312 "即可。
------解决方案--------------------
楼上的说的好!
[解决办法]
我之前也是遇到这个问题,搞了两天。
我是在JSP文件中加了一句编码语句:
<%@ page contentType= "text/html;charset=GB2312 "%>
<%request.setCharacterEncoding( "GB2312 "); %>
然后,在程序中对中文字符进行转码:
存入数据库:
name=request.getParameter( "name ").trim();
name=new String(name2.getBytes( "GB2312 "), "ISO-8859-1 ");
从数据库取出:
listname=new String(rs.getString( "name ").getBytes( "ISO-8859-1 "), "GB2312 ");
而且数据库、Tomcat都是用默认的编码。
[解决办法]
我现在的就是用的 MS SQL Server
我转码就乱码
但是页面设置了编码后不转码就对了
不会乱码
jsp+ MS SQL Server
一个字 累++
[解决办法]
先看是不在提交数据库前就乱码了
或者是取数据到页面出现乱码不然累死一样解决不了
对症下药!
[解决办法]
这个 jsp 中看出不有什么问题。是提交给 re.jsp 处理吗?re.jsp 里面是怎样处理的。
[解决办法]
正解:
我之前也是遇到这个问题,搞了两天。
我是在JSP文件中加了一句编码语句:
<%@ page contentType= "text/html;charset=GB2312 "%>
<%request.setCharacterEncoding( "GB2312 "); %>
然后,在程序中对中文字符进行转码:
存入数据库:
name=request.getParameter( "name ").trim();
name=new String(name2.getBytes( "GB2312 "), "ISO-8859-1 ");
从数据库取出:
listname=new String(rs.getString( "name ").getBytes( "ISO-8859-1 "), "GB2312 ");
而且数据库、Tomcat都是用默认的编码。
[解决办法]
你的过滤器是映射到所有文件的,所以程序一开始运行的是你的过滤器,只要在过滤器的 doFiler() 里加上 :
request.setCharacterEncoding( "GB2312 ") ;
response.setContentType( "text/html ");
设置传入第一个 JSP 页面的是文本类型的数据
[解决办法]
说的对,
我用了一个类也解决了这个问题。
package ******;
import com.sun.java.swing.plaf.windows.resources.windows;
public abstract 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( "编码转换错误:\n "+e.getMessage());
return " ";
}
}
public static String gBtoISO(String gb){
String iso;
try{
if(gb.equals( " ")||gb==null){
return " ";
}else{
gb = gb.trim();
iso = new String(gb.getBytes( "GB2312 "), "ISO-8859-1 ");
return iso;
}
}
catch(Exception e){
System.err.print( "编码转换错误:\n "+e.getMessage());
return " ";
}
}
}
==========================提交数据
String massage= "注册成功 ";
massage=Convert.gBtoISO(massage);
String massagetext= ":欢迎您成功登陆,点击确定按钮登陆到首页 ";
massagetext=Convert.gBtoISO(massagetext);
response.sendRedirect( "../include/SystemMassage.jsp?pirateName= "+pirateName+ "&massage= "+massage+ "&massagetext= "+massagetext);
=========================接收数据
<%
request.setCharacterEncoding( "gb2312 ");
String pirateName =request.getParameter( "pirateName ");
pirateName=Convert.ISOtoGB(pirateName);
String massage =request.getParameter( "massage ");
massage=Convert.ISOtoGB(massage);
String massagetext =request.getParameter( "massagetext ");
massagetext=Convert.ISOtoGB(massagetext);
%>
[解决办法]
查看你的操作系统默认语言
[解决办法]
数据库不用设置,只要是简体中文的操作系统就可以
对于汉字编码最好能够在显示之前,对其进行重新整理一次。
<%@page pageEncoding= "UTF-8 "%>
<%!private String trans(String chi) {
String result=null;
byte temp[];
try{
temp=chi.getBytes( "iso-8859-1 ");
result=new String(temp, "UTF-8 ");
} catch(java.io.UnsupportedEncodingException e) {
System.out.println(e.toString());
}
return result;
}
%>
<meta http-equiv= "Content-Type " content= "text/html; charset=UTF-8 ">
<%
String op=trans(request.getParameter( "test "));
%>
你试一下吧,以前我告诉过别人,有人也解决了,希望你能顺利摆平!
[解决办法]
我再补充一下,我把用到的 所有的有关中文文字传送接收的.jsp在eclipis里的右建属性的默认编码格式都从UTF-8改为了GB2312。
[解决办法]
你在试一下在过滤器跳转的时候加上设置编码:
request.setCharacterEncoding( "GB2312 ") ;
response.setContentType( "text/html;charset=gb2312 ");
如果这样还不行的话,那就帮不上你了!!!
[解决办法]
我再补充一下,我把用到的 所有的有关中文文字传送接收的.jsp在eclipis里的右建属性的默认编码格式都从UTF-8改为了GB2312。_____
这一点通过在页首添加
<%@ page contentType= "text/html;charset=gb2312 " pageEncoding= "GB2312 "%>
就可以实现了!
[解决办法]
为什么不用UTF-8呢
页面、过滤器、数据库、还有连接数据库的URL都设置成utf-8就行了