问题描述:
JSP页面,表单输入中文,查询MySQL数据库内"歌曲"信息,检索结果为空。字符编码为UTF-8格式,服务器为tomcat 7,0
同时在控制台信息以及值栈中发现title参数的值为乱码。
where xxx.title like '%第二人生%'
解决方法:
// PS: 步骤一 以及 步骤二 为重点检查对象
一、检查jsp“三个编码格式”
(1) jsp文件的存储格式 —— 可以用notepad++等进行格式转换
(2) jsp页面的解码格式 —— 加上以下这句话就OK了。
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
(3) 浏览器界面的解码格式 —— 一般都是右键——编码——Unicode(utf-8),或者:工具——编码——Unicode(utf-8)
二、tomcat服务器,get方式提交表单时
在项目工程中的Servers文件夹中的,server.xml文件中找到
<!-- A "Connector" represents an endpoint by which requests are received and responses are returned. Documentation at : Java HTTP Connector: /docs/config/http.html (blocking & non-blocking) Java AJP Connector: /docs/config/ajp.html APR (HTTP/AJP) Connector: /docs/apr.html Define a non-SSL HTTP/1.1 Connector on port 8080 --> <Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" />这段代码;修改
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" />
为
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" useBodyEncodingForURI="true" />即:添加 useBodyEncodingForURI="true" 这个属性
(1) Workspace//
(2)Project //工程属性
(3)File // 即JSP文件
四、 检查数据库各种编码
(1) 数据库编码
(2) 数据表编码
(3) localhost的各种编码 (这个的话要么手动改my.ini要么就偷懒点 一下)
一般是没有意外了……不出意外的话按照get方式提交的表单就能正常显示中文了
附网上一些参考资料:
① http://www.360doc.com/content/11/0308/16/2942953_99262299.shtmljsp中文乱码问题
② http://www.regexlab.com/zh/encoding.htm字符,字节和编码
迅
Dalston
2012-2-4 19:55:10