为什么通过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&characterEncoding=UTF-8 "换成
jdbc:mysql://localhost:3306/test?=useUnicode=true&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