jsp连接数据库的乱码问题 servlet请求参数编码处理get post
1.在所有需要读取数据的地方用下面的方式。同时jsp必须统一编码,如我都是UTF-8
String userName= new String(request.getParameter("userName").getBytes("ISO-8859-1"),"utf-8");
插入数据库的也需要先转换再插入。
上面句子的意思是:把name的值用“ISO-8859-1”字符集获取他的字节,“name.getBytes("ISO-8859-1")”这里面返回的是一个ISO-8859-1的字节数组,最后创建一个String对象,在把它赋值给name;
即就是字符编码转换,把字符集转换成用UTF-8编码的字节码。
ISO-8859-1:是国际字符集之一,比如我们常用的UTF-8和GBK等都是的。
2 上面之所以能解决的原理是:一般浏览器使用的是uTF-8处理字符(可通过网页右击--编码来查看),而WEB容器默认使用ISO-8859-1编码。
这样的话客户端使用UTF-8发送非ASCII字符的请求参数(如果请求参数是ASCII字符,没什么问题,因为都是按一个字节的编码处理,是兼容的,但是中文不同编码方式处理不同),servlet直接使用getParameter()等方法取得该请求参数时就会乱码。
举例,假设网页编码是UTF-8,通过窗体使用post发送“林”这个这个中文字符,相当于浏览器做了这个操作:
String text =java.net.URLEncoder.encode("林" ,“UTF-8”);(编码后为%e6%9e%97)
在Servlet 中取得请求参数时,容器默认使用ISO-8859-1来处理编码,相当于做了这个操作:
String text =java.net.URLEncoder.decode("%e6%9e%97" ,“ISO-8859-1”);自然显示的就不对了。
那该怎么办呢?
下面是servlet的get请求和post请求的不同处理:
jsp文件统一都是UTF-8
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// TODO Auto-generated method stub
//get处理编码的方式
String name = req.getParameter("username");
name = new String (name.getBytes("ISO-8859-1"),"UTF-8"); //合在一起就是String name= new String(request.getParameter("username").getBytes("ISO-8859-1"),"utf-8");
.....
}
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// TODO Auto-generated method stub
//post处理编码的方式
req.setCharacterEncoding("UTF-8");
String name = req.getParameter("username");
。。。。
}
2 sql server 2008数据库默认是GBK编码。
查看SQLserver编码格式的SQL语句 :
SELECT COLLATIONPROPERTY('Chinese_PRC_Stroke_CI_AI_KS_WS', 'CodePage')
下面是查询结果:
936 简体中文GBK
950 繁体中文BIG5
437 美国/加拿大英语
932 日文
949 韩文
866 俄文
65001 unicode UFT-8
默认都是936即 简体中文GBK
jsp连接数据库的乱码问题 servlet请求参数编码处理get post的更多相关文章
- Servlet请求参数编码处理(POST & GET)
小巧,但在中文语境下,还是要注意的. 以下是关键语句,注意转码的先后顺序,这源于GET是HTTP服务器处理,而POST是WEB容器处理: String name = request.getParame ...
- Servlet请求参数的方式
今天整理了以下几种常用的Servlet请求参数的方式,下面简单地介绍 1)getParameter(String key)返回一个字符串,获得name和key 一样的表单控件的数据,如果有重复的nam ...
- js处理url中的请求参数(编码/解码)
在处理 a 链接跳转其他页面时,总会遇到需要传递一些当前页面的信息到其他页面,然后其他页面利用这些信息进行相关操作.利用 get 请求或 hash 传递是常见的方式. 首先,需要对传递的参数进行编码, ...
- 入门servlet:request获取请求参数通用方式
一.获取请求参数通用方式 1. String getParameter(String name):根据参数名称获取参数值 例:username=flypig&password=2343 2. ...
- Http协议入门、响应与请求行、HttpServletRequest对象的使用、请求参数获取和编码问题
1 课程回顾 web入门 1)web服务软件作用: 把本地资源共享给外部访问 2)tomcat服务器基本操作 : 启动: %tomcat%/bin/startup.bat 关闭: %tomcat%/ ...
- JSP中解决获取请求参数中文乱码问题
分两种情况: 1.获取访问请求参数时乱码 解决方法:构造一个新的String String user = new String(request.getParameter("user" ...
- servlet请求编码与响应编码问题(编码不一致可能会导致乱码)
html中的编码 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"&g ...
- 使用过滤器(Filter)解决请求参数中文乱码问题(复杂方式)
前述: 在写这篇笔记之前,对笔记中的设计模式进行介绍: 本篇笔记中将要使用到的设计模式是:装饰(包装)设计模式 (1)装饰(包装)设计模式口诀: ...
- javaweb请求编码 url编码 响应编码 乱码问题 post编码 get请求编码 中文乱码问题 GET POST参数乱码问题 url乱码问题 get post请求乱码 字符编码
乱码是一个经常出现的问题 请求中,参数传递的过程中也是经常出现乱码的问题 本文主要整理了请求乱码中的问题以及解决思路 先要理解一个概念前提: 编码就是把图形变成数值码所以说: 图形的字符 -- ...
随机推荐
- iText中输出中文
原文链接 http://hintcnuie.iteye.com/blog/183690 转载内容 iText中输出中文,有三种方式: 1.使用iTextAsian.jar中的字体 BaseFont.c ...
- Ironic 安装和配置详解
转自:http://amar266.blogspot.com/2014/12/ironic-installation-and-configuration.html 1.Install Openstac ...
- [mysql]ERROR 1364 (HY000): Field 'ssl_cipher' doesn't have a default value
From: http://m.blog.csdn.net/blog/langkeziju/13511411 我的MySQL版本为5.6.14版本,是二进制包安装的(虽然是二进制包安装的,但是以下问题同 ...
- VS2010 正则批量替换头文件路径
最近在项目实践中,需要统一对工程头文件进行重构,具体要求是,将之前 #include "../../abc/def.h" 类似的头文件引用路径 替换为#include &q ...
- 183使用 MediaPlayer Framework 框架播放视频
效果如下: ViewController.h #import <UIKit/UIKit.h> #import <MediaPlayer/MediaPlayer.h> @inte ...
- mongodb:修改oplog.rs 的大小size
其内容字段说明: ts:操作日志的timestamp t: 未知? h:操作唯一随机值 v:oplog.rs的版本 op:操作类型: i:insert操作 u:update操作 d:delete操作 ...
- Oracle:在 debian9 上完美安装 oracle 10.2.0.5 x64
多余废话不说. 多动脑子,思路不要僵化. 关键点: --------------------------------------------------- 安装i386的支持库:libc6-dev:3 ...
- ubuntu:如何制作类似jeso的系统?
chroot 下载ubuntu的core包或base包 chroo后,先安装grub,再kernel,基本就ok了! 提示:mount --bind /proc newroot/proc 可能的问题 ...
- [转]gluProject 和 gluUnproject 的详解
gluProject 和 gluUnproject 的详解 简介: 三维空间中,经常需要将 3D 空间中的点转换到 2D(屏幕坐标),或者将 2D 点转换到 3D 空间中.当你使用 OpenGL 的时 ...
- mysql主从复制-方案1
mysql主机master 1. 编辑mysql配置文件my.cnf server_id = 1 #server_id服务器唯一标识 log_bin = mys ...