java web亂碼解決方法
設定檔的儲存編碼格式,這個一般在新建專案時,設定了GBK的編碼格式,此時檔案的頁面編碼格式是GBK的,而儲存格式是ANSI的,後來把項目及文件的編碼格式改為utf-8的編碼格式後,依然出現中文亂碼,這就是因為已經存在的文件的保存編碼格式還是ANSI把致,所以要把以前的.java文件的保存格式改為utf-8,才不會出現中文註解亂碼問題
window-preferences-General-Content Types 在Text下選擇對應的檔案類型再改頁面編碼為UTF-8然後點Update就可以了。
附註:
如果是全新的工作空間,設定Myeclipse的編碼格式,就等於設定了項目,檔案及其儲存的編碼格式了(不包含jsp等檔案)
如果是已經存在的工作間,而原來的編碼格式為GBK,那麼更改工作空間的編碼,則相當於設定了項目,檔案的編碼格式,但是對於以前已經存在的.java文件,其保存編碼是改變不了的,必須按上面(4)去更改,但是對於將要新建的文件的保存編碼是有作用的
亂碼要檢查的幾個地方
1.已儲存的編碼
2.jsp裡宣告的編碼(UTF-8和utf8是一樣的)
注意:
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
3 .過濾器裡處理的字元編碼,僅限於輸入的輸出的資料編碼。而上面那句程式碼中設的編碼格式就是頁面的顯示格式。
一份javaweb的專案程式碼中,總共有這幾種格式:
1.程式碼的儲存格式2.瀏覽器的解析格式3.資料輸入時的格式(也就是瀏覽器的解析格式決定)4.資料處理時的格式。
原則上以上六種格式都要一樣,就絕對不會亂碼,但有一些特殊情況,其中有一些不一致,顯示也會正確,如不需要將輸入的內容進行顯示和處理時request和respose的格式可以與其他的格式不一致,ps:常用編碼ISO-8859-1,gbk,utf-8
因此萬無一失的辦法如下:
Jsp裡的宣告語句可以弄掉四種格式,而剩下的兩種格式可以用監聽器的方法解決:
新建一個監聽器
package com.helloweenvsfei.filter; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; public class CharacterEncodingFilter implements Filter{ private String characterEncoding; private boolean enabled; public void destroy() { // TODO Auto-generated method stub characterEncoding = null; } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { // TODO Auto-generated method stub if(enabled || characterEncoding != null){ request.setCharacterEncoding(characterEncoding); response.setCharacterEncoding(characterEncoding); } chain.doFilter(request, response); } public void init(FilterConfig config) throws ServletException { // TODO Auto-generated method stub characterEncoding = config.getInitParameter("characterEncoding"); enabled = "true".equalsIgnoreCase(config.getInitParameter("enabled").trim()); } }
web.xml
<filter> <filter-name>characterEncodingFilter</filter-name> <filter-class>com.helloweenvsfei.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>characterEncoding</param-name> <param-value>utf8</param-value> </init-param> <init-param> <param-name>enabled</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>characterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
更多java知識請關注java基礎教學欄位。
以上是java web亂碼解決方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

Java 8引入了Stream API,提供了一種強大且表達力豐富的處理數據集合的方式。然而,使用Stream時,一個常見問題是:如何從forEach操作中中斷或返回? 傳統循環允許提前中斷或返回,但Stream的forEach方法並不直接支持這種方式。本文將解釋原因,並探討在Stream處理系統中實現提前終止的替代方法。 延伸閱讀: Java Stream API改進 理解Stream forEach forEach方法是一個終端操作,它對Stream中的每個元素執行一個操作。它的設計意圖是處

膠囊是一種三維幾何圖形,由一個圓柱體和兩端各一個半球體組成。膠囊的體積可以通過將圓柱體的體積和兩端半球體的體積相加來計算。本教程將討論如何使用不同的方法在Java中計算給定膠囊的體積。 膠囊體積公式 膠囊體積的公式如下: 膠囊體積 = 圓柱體體積 兩個半球體體積 其中, r: 半球體的半徑。 h: 圓柱體的高度(不包括半球體)。 例子 1 輸入 半徑 = 5 單位 高度 = 10 單位 輸出 體積 = 1570.8 立方單位 解釋 使用公式計算體積: 體積 = π × r2 × h (4
