开发时使用jetty一切正常的项目,部署到linux中tomcat下,卧槽,各种乱码问题,记录一下解决过程:
1. 路径上有中文无法打开,是因为tomcat不支持
修改conf/server.xml,添加URIEncoding(搜索port="8080")
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8"/>
2. form提交后,(springmvc)后台接受到乱码
web.xml添加过滤器:
<filter> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
3. Mybaits中文查不出数据
使用 类似Mybatis查询在语句select..from.. where s.username= #{username} 查询条件查询
传入username的是中文,在数据库中可以正常查询出来,但是mybatis查不出来(执行查询结果显示返回0条数据),折腾了很久,怀疑还是编码问题导致。
以下是网上找到的解决办法,果然有效! (个人安装的my.cnf文件只有mysqld选项,所以只要在[mysqld]下添加一行default-character-set=utf8就行)
估计数据库编码是latin的吧,最终找到原因,数据库安装后,编码没设置,设置成utf-8就好了,修改配置文件,最简单的完美修改方法,修改mysql的my.cnf文件中的字符集键值(注意配置的字段细节):
1、在[client]字段里加入default-character-set=utf8,如下:
[client] port = 3306 socket = /var/lib/mysql/mysql.sock default-character-set=utf8
2、在[mysqld]字段里加入character-set-server=utf8,如下:
[mysqld] port = 3306 socket = /var/lib/mysql/mysql.sock character-set-server=utf8
3、在[mysql]字段里加入default-character-set=utf8,如下:
[mysql] no-auto-rehash default-character-set=utf8
修改完成后,service mysql restart重启mysql服务就生效。
再一查询OK了
4.其他应该注意的地方
在springmvc配置中有编码配置的地方,一律UTF-8
还有JSP中不要忘记修改:
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
时间: 2024-10-03 22:18:38