首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

问个JSP乱码的有关问题,快搞死偶了

2012-01-16 
问个JSP乱码的问题,快搞死偶了。偶用MSSQL_sp4+tomcat5.028jsp页面向数据库中添加数据,数据库中中文显示???

问个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&amp;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就行了

热点排行