jsp提交页编码是UTF-8,MYSQL库也是UTF-8,为什么提交了中文字符在数据库里变成乱码了呢?这种问题怎么解决?谢谢另外,JSP弹出对话框(比如弹出“XXX审核通过”下面跟确定按钮)和返回上一页以及转到新URL应该怎么写呢?谢谢
解决方案 »
- org.springframework.beans.factory.BeanCreationException: Error creating bean wit
- 在jsp里面 当某个元素触发onmouseover时,想要出旁边出现一个浮动div
- 问一个菜鸟级的问题
- 求一套完整的OA系统源码
- 请问如何用JSP实现邮件群发???
- 用jsp做的一个简单的公告发布的页面程序,请各位帮忙修改一下
- 在jsp中如何加入word排版控件??
- jdk+Tomcat+Mysql无法配通?
- 第一次总是显示java.lang.NullPointerException,刷新以后就正常了?
- 一个简单的bean运用出现的问题?
- File "/WEB-INF/struts-tiles.tld" not found
- 利用SchemaExport导数据库出错
第二点可以用js解决 alert("*****");location.href="******"
返回上一页 在servlet里面可以response.sendRedirect(request.getRequestURL());
在jsp里面可以用 js: history.go(-1)
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@ page import="java.sql.*" import="java.lang.*" %><%@page contentType="text/html; charset=UTF-8"%><html><head><meta http-equiv="content-type" content="text/html; charset=UTF-8"><title></title></head><body><%request.setCharacterEncoding("UTF-8");%></body></html>
2.数据库编码
CREATE TABLE `user` ( `id` int(11) NOT NULL auto_increment, `username` varchar(50) NOT NULL, `password` varchar(100) NOT NULL,
PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;
3.连接数据库编码
<% Class.forName("org.gjt.mm.mysql.Driver").newInstance(); String url="jdbc:mysql://localhost/yourtable?user=root&password=root&useUnicode=true&characterEncoding=UTF-8"; Connection conn=DriverManager.getConnection(url); Statement stmt=conn.createStatement(); %>
4.jsp弹出对话框可以使用js实现。主题是window.alert()的应用。
5.返回上一页 <a href="javascript:history.back(-1)">返回上一页</a>
6.转到新url window.redirect(“你的页面”)注意绝对和相对路径
祝你好运!
每个jsp制定页面编码,<%@page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%>
加这句:request.setCharacterEncoding("UTF-8");
连接数据库url = jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8
看看上面几个环节有没有漏的,或者错的2.javascript 里面 弹带确定的框 confirm(”你确定??“);3. 转向eg:response.sendRedirect("*.jsp")
or <jsp:forward page="*.jsp" />.
先在servlet中看看取到的是不是乱码servlet的中文乱码
响应编码,(输出编码)
默认response.setContentType("text/html");
没有设置编码,所以出现中文时会出现乱码
解决办法:response.setContentType("text/html;charset=utf-8");通过jsp页面,html页面或者servlet中的表单元素提交参数给对应的jsp页面或servlet
而jsp和servlet接收的参数产生中文乱码,在接收post提交的参数之前,使用request.setCharactEncoding("utf-8")
设定接收参数的内容使用"utf-8"编码,更好的解决办法是添加过滤器使用表单传递参数可以通过get和post方式传递参数,也可以通过连接的方式传递参数,这个传递参数的方式实际上就是get方式传递参数
这种方式传递中文也可以产生乱码
解决方法:修改服务器的<Connector URIEncoding="utf-8">
1,String url="jdbc:mysql://localhost/yourtable?user=root&password=root&useUnicode=true&characterEncoding=UTF-8";驱动的链接有没有加utf-8
2,在request里取参数前是否加了request.setCharacterEncoding("UTF-8");
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=utf-8");
jsp页面中:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@page pageEncoding="gb2312"%>
<%request.setCharacterEncoding("gb2312");%>
数据库表改成utf-8
数据库连接参数改成utf-8
web服务器里也要改成utf-8
加过滤器:
首先在web.xml下加这段:
<filter>
<filter-name>Encoding</filter-name>
<filter-class>
AAA.SetCharacterEncodingFilter
</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
这个地方是可以改成你需要的
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param> 注意,请把配置加在web.xml的最前面,否则可能不起作用.从上面的配置可以看出,我用了一个SetCharacterEncodingFilter类(实现Filter接口),这个类的写法:
package AAA;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 SetCharacterEncodingFilter implements Filter {
protected String encoding = null;
protected FilterConfig filterConfig = null;
protected boolean ignore = true;
/*
* (non-Javadoc)
*
* @see javax.servlet.Filter#destroy()
*/
public void destroy() {
this.encoding = null;
this.filterConfig = null;
}
/*
* (non-Javadoc)
*
* @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest,
* javax.servlet.ServletResponse, javax.servlet.FilterChain)
*/
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
if (ignore || (request.getCharacterEncoding() == null)) {
String encoding = selectEncoding(request);
if (encoding != null)
request.setCharacterEncoding(encoding);
}
chain.doFilter(request, response);
}
/*
* (non-Javadoc)
*
* @see javax.servlet.Filter#init(javax.servlet.FilterConfig)
*/
public void init(FilterConfig filterConfig) throws ServletException {
this.filterConfig = filterConfig;
this.encoding = filterConfig.getInitParameter("encoding");
String value = filterConfig.getInitParameter("ignore");
if (value == null)
this.ignore = true;
else if (value.equalsIgnoreCase("true"))
this.ignore = true;
else if (value.equalsIgnoreCase("yes"))
this.ignore = true;
else
this.ignore = false;
}
/*
*
*/
protected String selectEncoding(ServletRequest request) {
return (this.encoding);
}
}
在servlet中
String name=request.getParmerter("name(表单参数)");
name=new String(name.getByte("iso-8859-1"),"gbk");
2,直接加过滤器,就不用转码了!
一、POST方式提交
这种方式下,需要修改tomcat下server.xml配置文件<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="2000" redirectPort="8443" />修改为<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="2000" redirectPort="8443" URIEncoding="GBK" />二、GET方式提交
这种方式下,用Filter过滤即可解决。