日期:2014-05-18  浏览次数:20692 次

为什么通过JSP页面写入数据是??????问号
request.setCharacterEncoding( "GB2312 ");

        大家好,小弟有个问题请教大家。
        一个页面向数据库提交写入中文数据,添加一行数据,在数据库显示的是“???????”问号。因为我已经处理过中文转换,所以JSP向数据库中提交的数据不是乱码而是问号。奇怪的事情就这个问号,因为我在数据库中用SQL语句INSERT   INTO   test   VALUES   ( '中文 ') "插入的就没有问题,而通过JSP就不可以,就显示是问号。

告急,求大家帮忙啊!谢谢!!

我用的是MySql数据库,PhpMyAdmin显示数据库,Tomcat5,JDK1.6,Eclipse   !!

其中用到了Struts框架!

我在连接数据库class中处理过
驱动org.gjt.mm.mysql.Driver   和   com.mysql.jdbc.Driver   全使用过。
这早也处理过了jdbc:mysql://localhost:3306/test?=useUnicode=true&characterEncoding=UTF-8 ";

页面中处理
request.setCharacterEncoding( "UTF-8 ");

XML中也配置处理了
SetCharacterEncodingFilter.java

Tomcat中的server.xml中的
<!--   Define   a   non-SSL   Coyote   HTTP/1.1   Connector   on   port   8080   -->
        <Connector   port= "8080 "
                              maxThreads= "150 "   minSpareThreads= "25 "   maxSpareThreads= "75 "
                              enableLookups= "false "   redirectPort= "8443 "   acceptCount= "100 "
                              debug= "0 "   connectionTimeout= "20000 "  
                              disableUploadTimeout= "true "   URIEncoding   =   "UTF-8 "   />
        <!--   Note   :   To   disable   connection   timeouts,   set   connectionTimeout   value
          to   0   -->
也修改了一下,添加了一个URIEncoding   =   "UTF-8 "


总之所有在网上能找到的方法都用过了,项目所有用到的工具字符都是 "UTF-8 "。
请有经验的朋友告诉指导我下好么?我都被这个问题困扰好几天了。
跪求,谢谢!


------解决方案--------------------
你的数据库不是utf-8的,把jdbc:mysql://localhost:3306/test?=useUnicode=true&amp;characterEncoding=UTF-8 "换成
jdbc:mysql://localhost:3306/test?=useUnicode=true&amp;characterEncoding=gb2312 "

或者更改数据库的编码
------解决方案--------------------
还要加response.setCharacterEncoding( "UTF-8 ");
------解决方案--------------------
那你用的mysql数据库里用的是什么编码?数据库里能显示中文吗?如果数据库里能显示,就是读取时转换的编码不统一了。再找找吧
------解决方案--------------------
在提交的页面加入下面一段代码.然后将提交的内容用getStr方法转换一下.

<%!
public String getStr(String s)
{
String str=s;
try
{
byte b[]=str.getBytes( "ISO-8859-1 ");
str=new String(b);
return str;
}
catch(Exception e)
{return null;}
}
%>

------解决方案--------------------
利用过滤器(Filter)试试

//这个是过滤器类,其中的GB2312可以替换成UTF-8
public class CharEncodingFilter implements Filter {
private FilterConfig filterConfig;
public void init(FilterConfig filterConfig) throws ServletException {
this.filterConfig = filterConfig;
}
public void doFilter(Ser