《(63)--08-06-Servlet汉字乱码解决方案.ppt》由会员分享,可在线阅读,更多相关《(63)--08-06-Servlet汉字乱码解决方案.ppt(17页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、中文乱码解决方案中文乱码解决方案中文乱码解决方案中文乱码解决方案中文乱码解决方案中文乱码解决方案主要内容request中文乱码及其解决方案response中文乱码及其解决方案中文乱码解决方案中文乱码解决方案四种常见编码四种常见编码ISO-8859-1:单字节编码,兼容ASCII码,相当于ASCII码的扩展,无法表示中文字符,系统默认编码。GBK:双字节编码,国标码,可以表示繁体字和简体字,而GB2312编码只能表示简体字,GBK兼容GB2312编码。中文乱码解决方案中文乱码解决方案四种常见编码四种常见编码UNICODE:定长双字节编码,可以表示所有语言的字符,不兼容任何编码,很多软件内部是使用
2、unicode编码来处理的。UTF:不定长编码,可以表示所有语言的字符,常用UTF-8,兼容iso8859-1编码,UTF编码会比UNICODE编码节省。中文乱码解决方案中文乱码解决方案JavaJava对字符编码的处理对字符编码的处理getBytes(charset)其作用是将字符串所表示的字符按照charset进行编码,并以字节方式表示。newString(charset)其作用是将字节数组按照charset编码进行组合识别,最后转换为unicode存储。setCharacterEncoding()该函数用来设置http请求或者响应的编码。中文乱码解决方案中文乱码解决方案乱乱码产生的原因码产
3、生的原因无论数据是在传输还是存储等过程中,都是以字节的方式在运行,但是数据内容是经过编码后再进行传输的。由于浏览器跟服务器端在编码和解码时采用了不同的码表,所以会产生乱码。中文乱码解决方案中文乱码解决方案requestrequest和和responseresponse的中文乱的中文乱码码response乱码:服务器向浏览器发送的数据包含中文字符,浏览器中显示的是乱码。request乱码:浏览器向服务器发送的请求参数中包含中文字符,服务器获取到的请求参数的值是乱码。中文乱码解决方案中文乱码解决方案responseresponse乱码乱码服务器发给浏览器的数据默认是按照ISO-8859-1编码,浏
4、览器接收到数据后按照当前页面的显示编码进行解码后显示,如果浏览器的当前页面编码不是服务器的编码,就出现乱码。中文乱码解决方案中文乱码解决方案responseresponse乱码解决方案乱码解决方案对于response乱码,只需要在服务器端指定一个编码方式,然后通知浏览器按照这个编码方式进行解码就可以了。中文乱码解决方案中文乱码解决方案responseresponse乱码解决方案(一)乱码解决方案(一)1.response.setCharacterEncoding(UTF-8);/设置服务器端编码。该方法必须在response.getWriter()之前进行设置才会生效。2.response.s
5、etHeader(content-type,text/html;charset=utf-8);/通知浏览器,服务器发送的数据格式是text/html,并要求浏览器使用utf-8进行解码。中文乱码解决方案中文乱码解决方案responseresponse乱码解决乱码解决方案方案(二)(二)response.setContentType(text/html;charset=utf-8);/通知浏览器服务器发送的数据格式是text/html,设置服务器采用utf-8编码,并要求浏览器使用utf-8进行解码。中文乱码解决方案中文乱码解决方案requestrequest乱码乱码从浏览器发起的访问方式有三种
6、:在地址栏直接输入URL访问(get请求)点击超链接访问(get请求)提交表单访问(get请求和post请求)中文乱码解决方案中文乱码解决方案requestrequest乱码乱码在服务器端,通过request.setCharacterEncoding(UTF-8)即可设置服务器解码为UTF-8。但是它只对请求体(post请求)里面的参数有效,如果参数跟在请求行中的URL后边(get请求),它就无能为力了。因此请求方式不同,解决乱码的方案也不同。中文乱码解决方案中文乱码解决方案requestrequest乱码解决方案乱码解决方案post方式下的中文乱码post方式提交的参数,存在请求体中,浏览器
7、将参数按照当前页面的显示编码进行编码,页面的编码方式一般情况下已经被设置成了UTF-8,只需要修改服务端解码方式,与浏览器页面编码方式一致即可。request.setCharacterEncoding(“UTF-8”);/在获取参数之前执行中文乱码解决方案中文乱码解决方案requestrequest乱码解决方案乱码解决方案get方式下的中文乱码Stringname=request.getParameter(name);/得到乱码数据name=newString(name.getBytes(“ISO-8859-1),utf-8);/将得到的数据进行ISO-8859-1方式解码,然后把得到的字节再通过UTF-8编码,得到正常的name值。中文乱码解决方案中文乱码解决方案案例案例乱码及其解决方案乱码及其解决方案get方式下的中文乱码post方式下的中文乱码中文乱码解决方案中文乱码解决方案小结小结通过本知识点的介绍掌握request中文乱码及其解决方案掌握response中文乱码及其解决方案