JSP 表单输入,UTF编码,get方式提交数据出现中文乱码解决方法

来源:互联网 发布:windows查看内存命令 编辑:程序博客网 时间:2024/05/21 07:27
开门见山直接点题


问题描述:


JSP页面,表单输入中文,查询MySQL数据库内"歌曲"信息,检索结果为空。字符编码为UTF-8格式,服务器为tomcat 7,0

同时在控制台信息以及值栈中发现title参数的值为乱码。


where xxx.title like '%第二人生%'


valuestack


解决方法:


// 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" 这个属性

useBodyEncodingForURI
三、检查IDE的各种编码(Eclipse为例)

(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