當前位置:首頁 » 編程語言 » javaservlet亂碼

javaservlet亂碼

發布時間: 2023-06-05 04:38:45

『壹』 如何解決JavaEE開發中字元編碼出現亂碼問題

1、瀏覽器調用jsp,html等頁面中文顯示亂碼
此情況需滿足兩個要求:

(1)文件本身是以utf-8編輯保存的(myEclipse中在properties中滑鼠右鍵選擇utf-8)
(2)瀏覽器用utf-8解析:
(手動)==> 在瀏覽器中右鍵選擇編碼格式為utf-8
(智能)==> 在文件中寫入如: <meta name="content-type" content="text/html; charset=UTF-8"> 通過<meta>標簽模擬response頭,起到告訴瀏覽器好謹用utf-8的編碼解析
(智能)==> response.setContentType("text/html;charset=UTF-8");起到告訴瀏覽器用utf-8的編碼解析
常用:
<meta name="content-type" content="text/html; charset=UTF-8">或<meta charset="utf-8">

<%@ pageEncoding="utf-8"%>
<?xml encoding="UTF-8"?>

2、通過瀏覽器調用servlet,頁面顯示亂碼。
Servlet亂碼分為request亂碼和response亂碼;
(1)response亂碼問題
解決方法:

在網上很有效的解決方法是添加嘩鬧:
response.setCharacterEncoding("UTF-8");
解決不了,後來又搜到一條解決方法是:
response.setContentType("text/html;charset=utf-8");或者 response.setHeader("content-type","text/html;charset=UTF-8");告訴瀏覽器用utf-8解析。(setHeader是HttpServletResponse的方法。如果想在攔截器Filter中設置亂襪罩字元編碼,則無此方法,因為Filter的doFilter方法的參數類型是ServletResponse)
兩句都填上,後來終於解決了這個問題;
其實我們應該思考一下本質:

response.setContentType("text/html;charset=UTF-8"); 目的是為了控制瀏覽器的行為,即控制瀏覽器用UTF-8進行解碼;
response.setCharacterEncoding("UTF-8");目的是用於response.getWriter()輸出的字元流的亂碼問題。如果是response.getOutputStream()是不需要此種解決方案的,因為這句話的意思是為了將response對象中的數據以UTF-8解碼後的位元組流發向瀏覽器;

熱點內容
dbscan聚類python 發布:2025-07-14 21:36:09 瀏覽:30
海島圖怎麼配置槍 發布:2025-07-14 21:35:07 瀏覽:323
安卓備忘錄怎麼轉蘋果去 發布:2025-07-14 20:57:16 瀏覽:114
加密貨幣app 發布:2025-07-14 20:46:57 瀏覽:554
醫院防汛演練方案與腳本 發布:2025-07-14 20:41:11 瀏覽:778
公網ip做域伺服器地址 發布:2025-07-14 20:40:13 瀏覽:52
php獲取幾 發布:2025-07-14 20:22:20 瀏覽:376
舊安卓如何刷入最新安卓 發布:2025-07-14 20:16:14 瀏覽:763
伺服器或網路不給力是什麼意思 發布:2025-07-14 20:15:36 瀏覽:318
爬網站資料庫 發布:2025-07-14 20:15:20 瀏覽:520