jsp和servlet操作mysql中文乱码问题的解决办法
2023-06-13 09:15:25 时间
首先看是从什么地方开始出现的乱码,只要统一编码,就不会出现乱码,下面以uft-8(个人认为最好)为例,详细说明:
1、如果乱码是从jsp页面出现的,jsp头部页面加上:
<%@pagelanguage="java"pageEncoding="UTF-8"%>
在head标签中加上标签。
2、如果乱码是在servlet中出现的,则有两种方法:
一种是在每个servlet中doget和doPost方法头部加上
request.setCharacterEncoding(“UTF-8″);
第二种最保险,一劳永逸,是专门写一个过滤器类,也称国际化,类名为SetCharacterEncodingFilter内容如下
packagecom.sharep.filter;//包名
importjava.io.IOException;
importjavax.servlet.Filter;
importjavax.servlet.FilterChain;
importjavax.servlet.FilterConfig;
importjavax.servlet.ServletException;
importjavax.servlet.ServletRequest;
importjavax.servlet.ServletResponse;
publicclassSetCharacterEncodingFilterimplementsFilter
{
protectedStringencoding=null;
protectedFilterConfigfilterConfig=null;
protectedbooleanignore=true;
publicvoidinit(FilterConfigfilterConfig)throwsServletException
{
this.filterConfig=filterConfig;
this.encoding=filterConfig.getInitParameter("encoding");
Stringvalue=filterConfig.getInitParameter("ignore");
if(value==null)
this.ignore=true;
elseif(value.equalsIgnoreCase("true"))
this.ignore=true;
else
this.ignore=false;
}
publicvoiddoFilter(ServletRequestrequest,ServletResponseresponse,
FilterChainchain)throwsIOException,ServletException
{
if(ignore||(request.getCharacterEncoding()==null))
{
Stringencoding=selectEncoding(request);
if(encoding!=null)
request.setCharacterEncoding(encoding);
}
chain.doFilter(request,response);
}
publicvoiddestroy()
{
this.encoding=null;
this.filterConfig=null;
}
protectedStringselectEncoding(ServletRequestrequest)
{
return(this.encoding);
}
}
然后在web-inf的web.xml中加上如下代码:
<filter>
<filter-name>SetCharacterEncoding</filter-name>
<filter-class>com.young.filter.SetCharacterEncodingFilter</filter-class>//注意这里是类名,要有完整包名
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>SetCharacterEncoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
这样就搞定了
3、如果还是有乱码,就是mysql数据库的问题了
1)保证建立数据库的时候数据库编码选择的是utf-8,最好在每个表中也指定编码格式,mysql默认是latin1
2)如果mysql版本是4.x以上,数据库中还是出现乱码,有以下两种解决方法:
一种是在连接数据库的代码中指定编码方式:
如果还是不行的话就是用
这个命令来查看默认字符集,如果不是utf-8的话在my.ini(windows)或者是my.cnf(linux)将相应的编码修改成utf8之后重启mysql服务器就ok了
相关文章
- MySQL中文字段使用指南(mysql字段为中文)
- MySQL图形界面客户端:极速操作体验!(mysql图形客户端)
- MySQL触发器:实现自动化数据管理(mysql触发器的作用)
- MySQL读取数据:简单易行(mysql读取数据中文)
- 缩写MySQL缩写:深度剖析(mysql中文首字母)
- MySQL——快速、灵活的数据库管理系统(mysql读法)
- MySQL 无法显示中文字符(mysql不显示中文)
- 25字中文文章标题:解放你的MySQL!必备工具大汇总(mysql工具)
- MySQL基础入门书籍推荐(mysql基础书籍)
- 解决MySQL修改配置文件的正确方式(mysql修改配置文件)
- MySQL实现中文字符检测(mysql判断汉字)
- MySQL远程使用:掌握基础知识,远程操作Mysql数据库。(mysql远程使用)
- 指尖轻敲:打开MySQL 数据库之旅(打开mysql数据库文件)
- MySQL如何存储小数点?25字中文文章标题:MySQL小数点存储方法解析(mysql存小数点)
- 解决MySQL中文插入乱码问题(mysql中文插入乱码)
- MySQL 解决中文字符乱码问题(mysql 中文字符乱码)
- MySQL表:存储有价值数据的宝库(mysql 表)
- MySQL连接数据库出现异常(mysql连不上数据库)
- 如何解决MySQL中的中文乱码问题(mysql中乱码怎么解决)
- 从MySQL中查询数据的C语言实现(c 从mysql查询数据)
- MySQL中文乱码问题解决方法小结(mysql个别中文问号)
- MySQL实现表间外部查询的方法(mysql两表外部查询)
- 快速搞定使用CMD管理MySQL数据库(cmd怎么连mysql)
- MySQL数据库不支持中文字符的原因和解决方法(mysql不能有中文)
- 如何解决MySQL无法插入字母的问题(mysql不能插入字母)
- MySQL执行语句未显示行数,如何解决(mysql不显示执行行数)
- MySQL无法使用中文进行查询(mysql不支持中文查询)
- MySQL 数据库不支持中文,如何处理(mysql不支持中文数据)
- MySQL不支持中文检索技巧,应如何解决(mysql不支持中文检索)