中文乱码可能路径
1.数据库内中文乱码
1.1已建立表更改编码模式
1.右击已建立表,转储SQL文件
2.打开文件,将下述编码格式修改为utf8,将代码全部复制。
3.将代码全部复制,打开新建查询,运行代码,SQL即支持中文输入。
1.2新建表设置编码模式
在建表语句后加上 ENGINE=InnoDB DEFAULT CHARSET utf8 ;
2.数据库连接JDBC中文乱码
连接设置编码模式utf-8
在连接时加入?characterEncoding=utf-8,类似网址传递资源
con = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/stucour?characterEncoding=utf-8","root","");
因为Dao层中写了很多连接,如果修改的话,要一个个全部修改,麻烦而且易错,所以我们新建一个config包,内含DataSource类,里面包含这些信息,要修改的话只要在里面修改即可。
package config;
public class DataSource {
public static String url = "jdbc:mysql://127.0.0.1:3306/stucour?characterEncoding=utf-8";
public static String username = "root";
public static String password = "";
}
连接时代码:
con = DriverManager.getConnection(DataSource.url ,DataSource.username ,DataSource.password);
3、5.Servlet传递jsp数据中文乱码
3.1.response设置编码格式
在传递数据时,重定向和转发时,设置response中的编码模式,代码如下:
response.setCharacterEncoding("utf-8");
5.1.request设置编码格式
在传递数据时,重定向和转发时,设置request中的编码模式,代码如下:
request.setCharacterEncoding("utf-8");
3、5.2.设置filter过滤层
因为Servlet中涉及多个跳转页面,所以如果要修改的话,也很麻烦,所以我们加入filter过滤层,通过过滤全部跳转界面,来实现全部request和response的设置编码模式。
- 1.新建一个filter文件
- 2.设置访问路径为/*,这样子只要输入访问资源,就会先跳转到filter中去,无论页面是否存在
- 3.修改代码如下:
无论是否存在,所有访问资源都会先进入该过滤层,然后执行doFilter语句后再进入对应访问资源。
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
// TODO Auto-generated method stub
// place your code here
// pass the request along the filter chain
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
chain.doFilter(request, response);/只有执行该语句,才会放行,否则全部拦截
}
4.JSP文件内中文乱码
4.1单文件设置
1.JSP文件本身编码模式设置为utf-8
2. 文件内代码设置:
4.2 新文件统一设置
Windows->Preferences->搜索jsp->JSP Files->修改编码为utf-8