手写服务器遇到的编码问题

request和response的setCharacterEncoding()方法中涉及的编码问题

1、pageEncoding=”UTF-8”的作用是设置JSP编译成Servlet时使用的编码。
2、contentType=”text/html;charset=UTF-8”的作用是指定服务器响应给浏览器的编码。
3、mate标签里content="text/html; charset=utf-8"这个是网页内容的编码,而不是文件本身的,其他类型的编码中文可能会出现乱码

4、request.setCharacterEncoding(“UTF-8”)的作用是设置对客户端请求和数据库取值时的编码,不指定的话使用iso-8859-1。(注意get和Post)

 在执行setCharacterEncoding()之前,不能执行任何getParameter()。该指定只对POST方法有效,对GET方法无效。分析原因,应该是在执行第一个getParameter()的时候,java将会按照编码分析所有的提交内容,而后续的getParameter()不再进行分析,所以setCharacterEncoding()无效。而对于GET方法提交表单是,提交的内容在URL中,一开始就已经按照编码分析提交内容,setCharacterEncoding()自然就无效。

5、response.setCharacterEncoding(“UTF-8”)的作用是指定服务器响应给浏览器的编码。

6、response.setContentType(“text/html;charset=utf-8”)的作用是指定服务器响应给浏览器的编码。同时,浏览器也是根据这个参数来对其接收到的数据进行重新编码(或者称为解码)。

对于发送数据,服务器按照response.setCharacterEncoding—contentType—pageEncoding的优先顺序,对要发送的数据进行编码。

参照文章:
(https://blog.csdn.net/kong_lev/article/details/73071198)

发布了4 篇原创文章 · 获赞 0 · 访问量 36

猜你喜欢

转载自blog.csdn.net/qq_43640120/article/details/105136250