標籤:nbsp 簡單的 output 伺服器 eth ext pre 資源 標籤
通過瀏覽器訪問伺服器頁面和資源時,不可避免地要傳送中文字串,如果客戶機與伺服器不能用同一碼錶解析字串,肯定會出現各種各樣的亂碼問題。我總結了幾個亂碼情境及解決辦法,如下
1、伺服器上的中文字串被用戶端訪問時出現的亂碼問題
原因:瀏覽器在解析中文時,不知道該用什麼碼錶去解析,就會用預設的gb2312去解析,肯定會出現亂碼
解決辦法:以什麼碼錶寫入流,在響應的要求標頭裡就告訴瀏覽器用什麼碼錶,例子使用utf-8
//告訴瀏覽器使用UTF-8碼錶解析response.setHeader("Content-type","text/html;charset=UTF-8");//如果寫成text/html,charset=UTF-8就會變成了下載,一定要小心String data="我是誰“;OutputStream out = response.getOutputStream();out.write(data.getBytes("UTF-8)); //以UTF-8寫入輸出資料流
//告訴瀏覽器使用UTF-8碼錶解析response.setHeader("content-type","text/html;charset=UTF-8");//告訴response以什麼碼錶向瀏覽器寫出資料response.setCharacterEncoding("UTF-8");String data="我是誰“;OutputStream out = response.getOutputStream();out.write(data);
上面兩種方法的效果是一樣的,除了上面兩種寫法,還有一種更簡單的寫法,效果同上。
//告訴瀏覽器使用UTF-8碼錶解析//告訴response以什麼碼錶向瀏覽器寫出資料response.setContentType("text/html;charset=UTF-8");String data="我是誰“;OutputStream out = response.getOutputStream();out.write(data);
最後一種寫法原理與上面三種不一樣,這是在html文檔裡通過meta標籤告訴瀏覽器使用什麼碼錶
//告訴瀏覽器使用UTF-8碼錶解析String data="我是誰“;OutputStream out = response.getOutputStream();out.write("<meta http-equiv=‘content-type‘ content=‘text/html;charset=UTF-8‘>".getBytes());out.write(data.getBytes("UTF-8)); //以UTF-8寫入輸出資料流
http請求中的中文亂碼問題