java/jsp-向mysql写数据时出现了中文乱码
来源:互联网 发布:windows 远程桌面 打开 编辑:程序博客网 时间:2024/05/01 04:18
java与jsp对于mysql的操作大致是相同的,在此以jsp为例进行介绍。
JSP页面想mysql插入数据,但中文现出了:“???”这样的乱码,第一反应是直接在mysql 里执行插入中文语句,mysql成功了,没有出现乱码(对于直接插入也是乱码的情况最后也进行介绍)。于是上网找了很多资料: 其实无论是用什么编码:gb2312或者utf-8,都要遵循编码统一的道理。就是说如果你在页面中采用了utf-8,那么你建mysql表时也如此,以下是如处需要统一的地方:
- 在jsp页面的<%@ page 位置加上 contentType=”text/html; charset=utf-8″ %>,<meta 的位置也是如此:content=”text/html;charset=utf-8″ />
- 建立一个mysql数据库,字符集采用utf-8,建表也是如此。
- 在getConnection的URL中加上:?useUnicode=true&characterEncoding=UTF-8″,如:url = “jdbc:mysql://localhost:3306/(此处为数据库名称)?useUnicode=true&characterEncoding=UTF-8″,也就是在(数据库名称)的后面
其中问号不能丢 - 如果你不是在jsp页面里直接处理form,也是和我一样采用servlet来处理form的话,那么在还要增加一个过滤器,这主要是因为采用的是tomcat的web发布器,如果用resin的话,不会有这样的问题,这也是我后面花了很长时间的原因所在。
过虑器 SetCharacterEncodingFilter.java 的代码:
package peom;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;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper; public class SetCharacterEncodingFilt
er implements Filter {
class Request extends HttpServletRequestWrappe r
{
public Request(HttpServletRequest request) {
super(request);
} public String toChi(String input) {
try {
byte[] bytes = input.getBytes(”ISO8859-1″);
return new String(bytes, “utf-8″);
} catch (Exception ex) {
}
return null;
} private HttpServletRequest getHttpServletRequest()
{
return (HttpServletRequest) super.getRequest();
} public String getParameter(String name)
{
return
toChi(getHttpServletRequest().getParameter(name));
}
public String[] getParameterValues(String name)
{
String values[] =getHttpServletRequest().getParameterValues(name);
if (values != null) {
for (int i = 0; i < values.length; i++) {
values[i] = toChi(values[i]);
}
}
return values;
}
} public void destroy() {
}
public void doFilter(ServletRequest request, ServletResponse
response,FilterChain chain) throws IOException, ServletException {
HttpServletRequest httpreq = (HttpServletRequest) request; if (httpreq.getMethod().equals(”POST”)) { request.setCharacterEncoding(”utf-8″); } else {
request = new Request(httpreq);
} chain.doFilter(request, response);
} public void init(FilterConfig filterConfig) throws
ServletException {
}
}然后在WEB-INF目录下的web.xml文件,配置下过虑器,
<filter>
<filter-name>SetCharacterEncodingFilt er</filter-name>
<filter-class>peom.SetCharacterEncodingFilt er</filter-class>
</filter>
<filter-mapping>
<filter-name>SetCharacterEncodingFilt er</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping> 这里要注意的是:路径、代码尽量放在前面,最好是<web-app 的后面
`id` int(100) NOT NULL AUTO_INCREMENT,
`usernumber` int(30) DEFAULT NULL,
`famenid` int(30) DEFAULT NULL,
`flowerid` int(30) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=gbk
- java/jsp-向mysql写数据时出现了中文乱码
- java 向jsp页面写数据的时候出现乱码
- 通过Java向Mysql写中文数据出现乱码解决方式
- 关于servlet向mysql写数据时出现中文乱码的解决方案
- jsp页面写入中文到mysql时出现了乱码
- mysql反向生成hbm.xml后,由hibernate向sql写数据中文出现乱码问题
- Java、JSP插入数据到MySQL数据库时出现中文乱码的最终解决方案
- jsp向mysql数据库添加中文出现乱码的解决方案
- 解决JAVA写mysql时出现中文乱码的现象
- 使用Hibernate向Mysql中插入中文数据出现乱码
- 解决:Hibernate 向Mysql插入中文数据乱码,出现???
- SSH项目中向数据库写中文数据时出现乱码解决办法
- java程序向mysql添加中文出现问号乱码
- jsp页面写入中文到mysql时出现了乱码(转)
- java程序向mysql数据库插入数据中文 乱码问题解决
- java程序向mysql中插入数据的中文乱码
- Java 向mysql插入中文数据乱码问题
- java向MySQL数据库插入记录时出现中文乱码问题
- 【leetcode】15. 3Sum
- 对比iOS中的四种数据存储
- 自主悬停&高度融合 作者:nieyong
- NDK 错误:Unable to launch cygpath. Is Cygwin on the path
- 死锁避免算法-银行家算法
- java/jsp-向mysql写数据时出现了中文乱码
- SQL多表连接查询以及mysql数据库、sqlserver数据库常见不同点
- 螺旋矩阵(C语言实现)- 2016.01.04
- 请求的链式处理——职责链模式
- 两个栈实现一个队列
- IOS crash atos
- 关系型数据库管理系统简介
- 实例8:状态栏中显示代表登陆状态的图标(实现仿QQ登陆状态显示)
- NDK :Native method not found