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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java判断字符串是什么编码_java可供判断某字符串是什么编码的一行代码

發布時間:2023/12/19 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java判断字符串是什么编码_java可供判断某字符串是什么编码的一行代码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

System.out.println("中文");

System.out.println("中文".getBytes());

System.out.println("中文".getBytes("GB2312"));

System.out.println("中文".getBytes("ISO8859_1"));

System.out.println(new String("中文".getBytes()));

System.out.println(new String("中文".getBytes(), "GB2312"));

System.out.println(new String("中文".getBytes(), "ISO8859_1"));

System.out.println(new String("中文".getBytes("GB2312")));

System.out.println(new String("中文".getBytes("GB2312"), "GB2312"));

System.out.println(new String("中文".getBytes("GB2312"), "ISO8859_1"));

System.out.println(new String("中文".getBytes("ISO8859_1")));

System.out.println(new String("中文".getBytes("ISO8859_1"), "GB2312"));

System.out.println(new String("中文".getBytes("ISO8859_1"), "ISO8859_1"));

eg:判斷當前字符串的編碼格式。

//判斷當前字符串的編碼格式

if(destination.equals(new String(destination.getBytes("iso8859-1"), "iso8859-1")))

{

destination=new String(destination.getBytes("iso8859-1"),"utf-8");

}

剛學習java的人,對于java中方法request.getParameter(“”),返回值若是中文,有時會莫名其妙的值變成了亂碼比較厭煩。

即使在處理中加入了

response.setContentType("text/html;charset=utf-8");

request.setCharacterEncoding("utf-8");

response.setCharacterEncoding("utf-8");

但效果并沒有達到預期。究其原因在于以下幾點:

ServletRequest接口中定義了一個getCharacterEncoding方法,該方法用于返回請求消息中的實體內容的字符集編碼名稱。如果請求消息中沒有指定實體內容的字符集編碼名稱,則getCharacterEncoding方法返回null。

ServletRequest接口中定義了一個 setCharacterEncoding方法,該方法用于覆蓋請求消息中的實體內容的字符集編碼名稱的設置。getParameter和getReader方法將讀取到的實體內容從字節數組形態轉換成字符串返回時,都要參照請求消息中的實體內容的字符集編碼名稱,所以,setCharacterEncoding方法應早于getParameter或getReader方法之前進行調用。

ServletRequest對象的getParameter等方法以哪種字符集編碼對參數進行URL編碼,需記下以下三種情況:

(1) 對于HTTP請求消息的請求行中的URL地址后的參數,getParameter等方法進行URL解碼時所采用的字符集編碼在Servlet規范中沒有明確規定,它由各個Servlet引擎廠商自行決定。對于這種情況,Tomcat中的ServletRequest對象的getParameter等方法默認采用ISO8859-1字符集編碼進行URL解碼,因此無法返回正確的中文參數信息。

(2) 對于POST方式下的”application/x-www-form-urlencoded”編碼格式的實體內容,getParameter等方法以ServletRequest對象的getCharacterEncoding方法返回的字符集編碼對其進行URL解碼。事實上,對于IE瀏覽器產生的HTTP請求消息中沒有通過任何方式指定對實體內容進行URL編碼所采用的字符集編碼,那么,Servlet引擎將無法知道請求消息中的實體內容的字符集編碼,getCharacterEncoding()方法的返回值為null。對于這種情況,ServletRequest對象的getParameter等方法將使用默認的ISO8859-1字符集編碼對實體內容中的參數進行URL解碼,因此也將無法返回正確的中文參數信息。

(3) ServletRequest接口中定義了一個 setCharacterEncoding方法來設置請求消息中的實體內容的字符集編碼名稱,getParameter方法將以該方法設置的字符集編碼對實體內容進行URL解碼,所以,只要使用ServletRequest.setCharacterEncoding方法設置實體內容的字符集編碼為其URL編碼前的字符集編碼,那么getParameter方法就可以從實體內容返回正確的中文參數信息。但是,應該注意一點:ServletRequest.setCharacterEncoding方法設置的是請求消息中的實體內容的字符集編碼名稱,它只影響getParameter方法對POST方式下的”application/x-www-form-urlencoded”編碼格式的實體內容進行URL解碼的結果,而不能影響getParameter方法對HTTP請求消息的請求行中的URL地址后的參數進行URL解碼的結果。

所以在servlet開發中對于中文參數值的處理,完整代碼如下:

response.setContentType("text/html;charset=utf-8");

request.setCharacterEncoding("utf-8");

response.setCharacterEncoding("utf-8");

String name=Tool.ObjToStr(request.getParameter("name"), "美國");if(name.equals(new String(name.getBytes("iso8859-1"), "iso8859-1")))

{

name=new String(request.getParameter("name").getBytes("iso8859-1"),"utf-8");

}

總結

以上是生活随笔為你收集整理的java判断字符串是什么编码_java可供判断某字符串是什么编码的一行代码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。