java response.write_response设置编码方式 print和write方法的对比
很多場合會發(fā)現(xiàn)我們輸出的中文是亂碼,這主要可能有兩方面的原因:
一個是瀏覽器的解析方式,另一個是我們服務(wù)器端返回數(shù)據(jù)的方式。只要我們保證瀏覽器的解析方式和我們回顯的數(shù)據(jù)的編碼格式是一致的,基本上亂碼問題就可以得到解決。大多數(shù)數(shù)情況下,瀏覽器的默認(rèn)編碼方式是utf-8,因此我們只要設(shè)置服務(wù)器返回的數(shù)據(jù)的編碼方式也是utf-8即可。
在Java后臺的Controller代碼或者Servlet代碼中用response的方法來設(shè)置輸出內(nèi)容的編碼方式,主要有以下三個方法:
1、response.setCharacterEncoding("UTF-8");
2、response.setContentType("text/html;charset=UTF-8");
3、response.setLocale(new java.util.Locale("zh","CN"));
下面對以上3種方法進(jìn)行差異分析:
第一種方法只能用來設(shè)置out輸出流中所采用的編碼,但是它的優(yōu)先權(quán)最高,可以覆蓋后面兩種方法中的設(shè)置;
第二中方法可以設(shè)置out輸出流中字符的編碼方式,也可以設(shè)置瀏覽器接收到這些字符后以什么編碼方式來解碼,它的優(yōu)先權(quán)低于第一種方法,
但高于第三種方法;這種方法通知response以UTF-8輸出和瀏覽器以UTF-8打開。即等價于
response.setHeader("content-type", "text/html;charset=UTF-8");通知瀏覽器以utf-8解析
和response.setCharacterEncoding("UTF-8");注意第二句句需要寫在PrintWriter out = response.getWriter();的前面,如果拿到字符流后再設(shè)置編碼是沒有用的。
第三種方法只能用來設(shè)置out輸出流中字符的編碼方式,但是它的優(yōu)先權(quán)最低,在已經(jīng)使用前兩種方法中的一個設(shè)置了編碼方式以后,它就被覆蓋而不起作用了。
out.write()是字節(jié)輸出流的方法
out.print()是字符輸出流的方法
一、區(qū)別
1. print方法是子類JspWriter,write是Writer類中定義的方法;
2. 重載的print方法可將各種類型的數(shù)據(jù)轉(zhuǎn)換成字符串的形式輸出,而重載的write方法只能輸出字符、字符數(shù)組和字符串等與字符相關(guān)的數(shù)據(jù);
3. JspWriter類型的out對象使用print方法和write方法都可以輸出字符串,但是,如果字符串對象的值為null時,print方法將輸出內(nèi)容為“null”的字符串,而write方法則是拋出NullPointerException異常。
轉(zhuǎn)載至鏈接:https://my.oschina.net/mrpei123/blog/1859951
總結(jié)
以上是生活随笔為你收集整理的java response.write_response设置编码方式 print和write方法的对比的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一瓶啤酒多少钱啊?
- 下一篇: java 跳转 oop_Java基础之: