一个关于 req.setChracaterEncoding(String) 的问题

JspStudent JspStudent 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
举例子来说,一个浏览器向服务器发出了如下请求:这些请求以字节的形式发出(编码为GBK)

GET /index.servlet HTTTP/1.0

user-agent : .......
accept : html/text;*/*
cookie : sessionid=dajkdjehq3893ehwoeri

name=李超
passwd=731137

第一,web服务器(如TOMCAT)将用什麽编码方式来解析收到的一系列字节?以默认的ISO-8859-1吧?也就是说,当服务器解析到“李超”的时候,只是简单的把“李超”编码的四个字节当成四个普通的ISO-8859-1字符来对待,将其转换成四个Unicode字符,存在req中与name属性相关联的字符串中。我说的对吗?


第二,现在我设置了:req.setCharacterEncoding("GBK")


服务器是不是仍以ISO-8859-1来解析收到的如下字节

GET /index.servlet HTTTP/1.0

user-agent : .......
accept : html/text;*/*
cookie : sessionid=dajkdjehq3893ehwoeri

name=李超
passwd=731137

并且以相同的方式生成存在于req中与name属性相关联的字符串。而后,当servlet调用req.setCharacterEncoding("GBK")方法时,就用如下方式:

String name=req.getParameter("name");
name=new String("name.getBytes("ISO-8859-1","GBK");

生成新的name属性的字符串,然候将新生成的字符串替换掉原先存储在req中与name属性有关的字符串。当servlet调用req.getParameter("name")时,就可以返回以正确方式解码并存储在字符串中的参数值了,我说的对吗?


毕竟我考虑到这样一个问题,当调用servlet时,WEB服务器早已分析好了HTTP的请求和参数。WEB服务器根本不会知道一个会有一个servlet将调用setCharacterEncoding("GBK")方法,也就是说,WEB服务器(TOMCAT)无法知道客户端发送的字节的编码方式,所以它只能以默认的ISO-8859-1方式来解析。

以上我的两种说法,对吗?若是不对,错在哪里?
...全文

相关推荐

详解Java从后台重定向(redirect)到另一个项目的方法

主要介绍了详解Java从后台重定向(redirect)到另一个项目的方法,非常具有实用价值,需要的朋友可以参考下

weixin_38724247

req:一个用于人类的golang http请求库

要求 一个用于人类的golang http请求库 特征 轻的 简单的 轻松玩转JSON和XML 易于调试和记录 轻松上传和下载文件 轻松管理Cookie 轻松设置代理 轻松设置超时 轻松自定义http客户端 文档 安装 go get github.com/imroc/req 概述 req在Go的现有net/http库上实现了一个友好的API。 Req和Resp是两个最重要的结构,您可以将Req视为发起HTTP请求的客户端,将Resp视为请求和响应的信息容器。 它们都提供简单方便的API,使您可以做很多事情。 func ( r * Req ) Post ( url string , v ... interface {}) ( * Resp , error ) 在大多数情况下,只需要url,其他是可选的,例如标头,参数,文件或正文等。 有一个默认的Req对象,它的所有公共方法都由

DGGs

http_req:具有内置HTTPS支持的简单HTTP客户端

http_req:具有内置HTTPS支持的简单HTTP客户端

你就应该

express-get-to-req:中间件来表达

快速获取请求 中间件从可用的 get params 中获取数组并将它们添加到 req。 用法 ###app.js var app = require ( 'express' ) ( ) ; app . use ( require ( 'express-get-to-req' ) ( array | string ) ) ; ###例子 var app = express ( ) ; app . use ( require ( 'express-get-to-req' ) ( [ 'name' , 'login' ] ) ) ; app . get ( '/' , function ( req , res ) { res . send ( 'Hello ' + req . name + '. Your Login:' + req . login ) } ) ;

实践千百次练习而

tomcat编码问题

tomcat输出中文经常乱码,而且乱码为???,如何解决这一问题。

jiaoqingsheng
评论 6
收藏 已收藏
分享
返回顶部
JspStudent
Web 开发 81,108 成员 341,721 内容