jsp页面传入数据库成问号最终解决办法
来源:互联网 发布:最新网络伤感流行歌曲 编辑:程序博客网 时间:2024/05/17 23:05
昨日研究很长时间用各种方法将页面编码调成UTF-8,最终传入数据库仍为问号 ,所有方法似乎都无济于事
最后悉心研究别人的项目,找到了解决问题的方法:
localhost:3306/test?useUnicode=true&characterEncoding=UTF-8";
就是在连接数据库的URL地址上加上红色字体对接入数据库字符进行编码!!!
====================================================================================================================================
下面对其他页面设置成UFT-8编码进行总结,仅供参考
①在jsp页面最上面加上<%request.setCharacterEncoding("UTF-8");%>
此方法仅对当前页面post表单提交数据库编码有效,之所以之前对数据库没影响,个人猜测可能是因为编码传入web容器,又变成ISO-8859-1,对于数据库没有转码,所以提交成了乱码。
在语句中加上response.setCharacterEncoding("UTF-8");书上所说的是服务器向用户输出数据时的编码设定,本人目前没有涉及到此方法的用处。
②在Servlet的doPost方法中加上request.setCharacterEncoding("UTF-8");
这种方法对容器中的编码进行了重新设置,但数据库仍然无法识别具体编码,所以就成了我们所看到的问号。当然数据从数据库取出来用的时候依然是正常的,因为字符就是用UTF-8进行编码的。这个方法很有必要,否则字符传到数据库会变成乱码;
③有人建议在tomcat的server.xml文件中找到黑色字体的语句然后在下面加入红色字体的语句,具体如下
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
useBodyEncodingForURI="true"
IEncoding="utf-8"
URIEncoding="utf-8" />
connectionTimeout="20000"
redirectPort="8443"
useBodyEncodingForURI="true"
IEncoding="utf-8"
URIEncoding="utf-8" />
之前照做了,可是还是没有解决问题,自己也不知道这样做有什么用。因为涉及到服务器的修改,本人最终还是原封不动地改回来了。
④在jsp页面顶端加上
<%@ page contentType="text/html; charset=UTF-8"%>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
或者在html标签里添加<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
或者在table标签里添加 accept-charset="UTF-8" contentType="text/html; charset=UTF-8"
这些语句仅对本页面编码显示设置和内容编码设置做出了设定,可以解决浏览页面时出现乱码的情况,但对底层表单字符传向数据库的效果同方法①一样没有任何作用。
====================================================================================
⑤设置字符编码过滤器,这个方法很重要!!具体编码如下:
1.创建字符过滤器对象:
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class CharactorFilter implements Filter {
String encoding = null;
public void destroy() {
encoding = null;
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
if(encoding!=null){
request.setCharacterEncoding(encoding);
response.setContentType("text/html;charset="+encoding);
}
chain.doFilter(request, response);
}
public void init(FilterConfig fConfig) throws ServletException {
encoding = fConfig.getInitParameter(encoding);
}
}
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class CharactorFilter implements Filter {
String encoding = null;
public void destroy() {
encoding = null;
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
if(encoding!=null){
request.setCharacterEncoding(encoding);
response.setContentType("text/html;charset="+encoding);
}
chain.doFilter(request, response);
}
public void init(FilterConfig fConfig) throws ServletException {
encoding = fConfig.getInitParameter(encoding);
}
}
2.在web.xml中配置过滤器:
<filter>
<filter-name>CharatctorFilter</filter-name>
<filter-class>filter.CharactorFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharatctorFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-name>CharatctorFilter</filter-name>
<filter-class>filter.CharactorFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharatctorFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
这样就不用在每个页面运用方法①进行设置页面响应编码了,十分方便!!
1 0
- jsp页面传入数据库成问号最终解决办法
- JSP页面显示问号
- oracle数据库中文变成问号解决办法
- JSP传入Service多个值是用数字解决办法
- JSP 问号
- springmvc mybatis,传入mapper中查询数据库,参数变问号,无效的参数
- 部分中文插入mysql数据库变成问号的解决办法
- 20160423 Oracle数据库中中文显示问号的解决办法
- mysql 创建数据库插入数据出现问号解决办法
- Java插入中文到数据库中文变成问号???解决办法
- javaWeb将数据保存到数据库中文出现问号,解决办法。
- 在jsp页面上几种取action传入值得几种方法
- jsp页面传入后台Action乱码问题解决方案
- JSP页面备份数据库
- jsp页面登录超时页面嵌套解决办法
- mybatis 参数传入后变成问号
- servlet处理数据库表中所有数据,在jsp页面表格中用jst forEach输出解决办法
- 用STS写JSP页面连接数据库时出现500错误的解决办法
- Swift——map函数浅析
- 使用TransactionTemplate 编程式控制事务
- jQuery效果之菜单
- 关于id cannot be resolved or is not a field 的一个解决方法
- HDU 1203 I NEED A OFFER!
- jsp页面传入数据库成问号最终解决办法
- 机器学习简介
- 数学之美读书笔记3
- Java反射基础(二)--Fileds对象的使用
- 1011. A+B和C (15)
- Hexagon SDK知识学习
- 《数据库系统原理之ER模型》
- 徐汉彬:Web系统大规模并发——电商秒杀与抢购
- Spring MVC 如何上传多个文件到指定位置