日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

java response.write_response设置编码方式 print和write方法的对比

發(fā)布時間:2023/11/27 生活经验 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java response.write_response设置编码方式 print和write方法的对比 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

很多場合會發(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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。