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的更多相关文章

  1. Servlet请求参数编码处理(POST & GET)

    小巧,但在中文语境下,还是要注意的. 以下是关键语句,注意转码的先后顺序,这源于GET是HTTP服务器处理,而POST是WEB容器处理: String name = request.getParame ...

  2. Servlet请求参数的方式

    今天整理了以下几种常用的Servlet请求参数的方式,下面简单地介绍 1)getParameter(String key)返回一个字符串,获得name和key 一样的表单控件的数据,如果有重复的nam ...

  3. js处理url中的请求参数(编码/解码)

    在处理 a 链接跳转其他页面时,总会遇到需要传递一些当前页面的信息到其他页面,然后其他页面利用这些信息进行相关操作.利用 get 请求或 hash 传递是常见的方式. 首先,需要对传递的参数进行编码, ...

  4. 入门servlet:request获取请求参数通用方式

    一.获取请求参数通用方式 1. String getParameter(String name):根据参数名称获取参数值 例:username=flypig&password=2343 2. ...

  5. Http协议入门、响应与请求行、HttpServletRequest对象的使用、请求参数获取和编码问题

    1 课程回顾 web入门 1)web服务软件作用: 把本地资源共享给外部访问 2)tomcat服务器基本操作 : 启动:  %tomcat%/bin/startup.bat 关闭: %tomcat%/ ...

  6. JSP中解决获取请求参数中文乱码问题

    分两种情况: 1.获取访问请求参数时乱码 解决方法:构造一个新的String String user = new String(request.getParameter("user" ...

  7. servlet请求编码与响应编码问题(编码不一致可能会导致乱码)

    html中的编码 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"&g ...

  8. 使用过滤器(Filter)解决请求参数中文乱码问题(复杂方式)

    前述:      在写这篇笔记之前,对笔记中的设计模式进行介绍:      本篇笔记中将要使用到的设计模式是:装饰(包装)设计模式           (1)装饰(包装)设计模式口诀:         ...

  9. javaweb请求编码 url编码 响应编码 乱码问题 post编码 get请求编码 中文乱码问题 GET POST参数乱码问题 url乱码问题 get post请求乱码 字符编码

     乱码是一个经常出现的问题 请求中,参数传递的过程中也是经常出现乱码的问题 本文主要整理了请求乱码中的问题以及解决思路   先要理解一个概念前提: 编码就是把图形变成数值码所以说: 图形的字符  -- ...

随机推荐

  1. asp.net Core EF core ( Entity Framework 7 ) 数据库更新维护

    CreateData­baseIfNotExists等之前的API已经废弃,现在采用的是微软封装好,简化.高效的API,migrations 因为,旧API,要付出高昂的代价,以及局限性 打开VS20 ...

  2. mongodb 学习1

    基本概念 MongoDB是一个高性能,开源,无模式的文档型数据库,是当前NoSql数据库中比较热门的一种.它在许多场景下可用于替代传统的关系型数据库或键/值存储方式( 文件存储格式为BSON(一种JS ...

  3. 深入探讨:MySQL数据库MyISAM与InnoDB存储引擎的比较

    From: http://www.jb51.net/article/37766.htm MySQL有多种存储引擎,MyISAM和InnoDB是其中常用的两种.这里介绍关于这两种引擎的一些基本概念(非深 ...

  4. laravel-第一課安裝

    本地安装laravel,php环境要配置好,推荐xmapp一键搭建. 1.程序包直接从官方下载,官方开源地址:https://github.com/laravel/laravel(当然也可从此网站:h ...

  5. TensorFlow-GPU:查看电脑显卡型号是否支持CUDN,以及相关软件下载与介绍

    1.显卡(GPU)是否支持CUDN https://developer.nvidia.com/cuda-gpus 2.了解基础知识 1)CUDA(Compute Unified Device Arch ...

  6. windows 下为Python安装redis

    最近在看<redis实战>,里面的redis示例都是Python写的,先将环境整好 启动redis redis-server.exe  redis.conf 安装了python2.7 安装 ...

  7. Symbol.iterator的理解

    https://blog.csdn.net/margin_0px/article/details/82971545

  8. c# windows服务

    参考:https://www.cnblogs.com/knowledgesea/p/3616127.html 序言 前段时间做一个数据迁移项目,刚开始用B/S架构做的项目,但B/S要寄存在IIs中,而 ...

  9. SpringMVC------pom.xml添加spring依赖,统一管理版本

    如下: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.or ...

  10. getActionBar().setDisplayHomeAsUpEnabled(true)报空指针(已解决)

    今天捣鼓了一下午.getActionBar().setDisplayHomeAsUpEnabled(true)总是报空指针.在我的还有一个Android4.4.2的项目中就没有一点问题.我还以为是我自 ...