javaweb后台轉碼


為什么需要轉碼?

客戶端向服務器發送請求的四種情況:1、URL方式直接訪問;2、頁面鏈接(屬於get請求);3、表單get提交;4、表單post提交

1.url(url和頁面鏈接):各大瀏覽器、各個操作系統對URL的URI、QueryString編碼都可能存在不同.tomcat對URI的解碼操作是首先獲取Connector的解碼集,

該配置在server.xml中,<Connector URIEncoding="utf-8"  />  如果沒有定義則會采用默認編碼ISO-8859-1來解析。

2,表單:發送請求時都是根據設置的charset進行編碼,解碼時,get方式根據設置的URIEncoding進行,post方式仍根據頁面設置的charset.

@參考文章

jetty默認是utf-8.jetty與tomcat不同,不是在xml配置文件中修改,可以在Jvm參數中加入:Dorg.mortbay.util.URI.charset=字符編碼@參考文章

如何轉碼?

iso-8859-1轉utf-8

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

 

 

讀取文件有時亂碼,指定編碼格式:

 

String pathname = "D:/用戶目錄/我的文檔/Tencent Files/1480756395/FileRecv/新建文本文檔 (14).txt"; // 絕對路徑或相對路徑都可以,這里是絕對路徑,寫入文件時演示相對路徑
File filename = new File(pathname); // 要讀取以上路徑的input。txt文件
InputStreamReader reader = new InputStreamReader(
new FileInputStream(filename), "GB2312"); // 建立一個輸入流對象reader
BufferedReader br = new BufferedReader(reader); // 建立一個對象,它把文件內容轉成計算機能讀懂的語言
String line = "";
line = br.readLine();
// testEncode(line);
String line2="";
line2+=line;
while (line != null) {
line = br.readLine(); // 一次讀入一行數據
line2+=line;
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM