http中传递的消息分为请求行 请求头 实体内容
请求行 就是网址
请求头中有很多字段 比如cookies就是其中的一个字段
实体内容 常见的post请求中的实体内容
其中实体内容是可以通过HttpServletRequest request, HttpServletResponse response设置编码的
解码定义 将字符转换为字节(二进制数)
编码定义 将字节(二进制数)转换为字符
其中如果
request.setCharacterEncoding("utf-8") 设置服务器接收客户端的字节,然后将字节转换为字符的编码格式
response.setContentType("text/html;charset=utf-8");设置服务器发给客户端的字节和客户端解码的码表
服务器将字符转换为字节发送给客户端 然后客户端接收到字节,通过解码将字节转换字符
请求行中
1.常见的 get请求的信息是在请求行中
服务器拿到从客户端发过来的数据
因为 request不能设置编码格式,所以会采用默认的编码"iso-8859-1"进行编码
所以需要将得到的字符通过"iso-8859-1"码表转换为字节,然后再通过对应的码表将此字节转换为字符
value是get请求中得到的字段的值
new String(value.getBytes("iso-8859-1"),"uft-8");
2.整个网址链接上存在特殊字符(中文等)==对网址链接处理办法
encodeURI和decodeURI是成对来使用的,因为浏览器的地址栏有中文或其他英文字符的话,可以会出现不可预期的错误,所以可以encodeURI把非英文字符转化为英文编码,再用decodeURI把字符还原回来 Javascript:encodeURI(URIString)与decodeURI(URIString) 必选的 URIString 参数代表一个已编码的 URI。 说明 encodeURI 方法返回一个编码的 URI。如果您将编码结果传递给 decodeURI,那么将返回初始的字符串。encodeURI 方法不会对下列字符进行编码:":"、"/"、";" 和 "?"。请使用 encodeURIComponent 方法对这些字符进行编码。 注:decodeURI()方法相当于java中的java.net.URLDecoder.decode(URIString, "UTF-8") encodeURI() 方法java.net.URLEncoder。encode(URIString, "UTF-8"))
请求头中 常见的 cookies对象
服务器先用iso-8859-1码表编码cookies字段发送给客户端,然后客户端通过iso-8859-1去编码此字段
如果cookies对象中的参数存在iso-8859-1"码表没有字符,那么直接会报错(iso-8859-1不支持中文等特殊字符)
所以通过将此参数进行转换
String curDate = URLEncoder.encode(date, "utf-8");===解码的时候设置码表
String getDate =URLDecoder.decode(c.getValue(),"utf-8");===编码的时候设置码表