idea2017.03做java web 專案解決中文亂碼問題
方法一:
第一步:修改配置檔案
進入tomcat對應版本資料夾-->conf-->serve.xml,右擊用記事本開啟
將<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
maxThreads="100"
redirectPort="8443" />
改為:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
maxThreads="100"
URIEncoding="utf-8"
compression="on"
compressionMinSize="2048"
compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"
redirectPort="8443" />
儲存修改。
第二步:
如果採用的是doGet()方法,
則在方法體內部 PrintWriter pw = response.getWriter();語句之前加上如下兩行程式碼:response.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
如果採用的是doPost()方法,
則在PrintWriter pw = response.getWriter();之前加上如下三行程式碼:
在PrintWriter pw = response.getWriter();之前加上如下三行程式碼:
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
方法二:(推薦第二種辦法)
使用過濾器,新建一個過濾器的類,在該類中設定編碼格式,接著在web.xml配置過濾器的類,這樣其他servlet檔案就算不寫編碼格式的相關程式碼,也不會出現亂碼了。
第一步:新建一個過濾器的類:
import javax.servlet.*; import java.io.IOException; public class characterFilter implements Filter { @Override public void init(FilterConfig filterConfig) throwsServletException { } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { servletRequest.setCharacterEncoding("utf-8"); servletResponse.setCharacterEncoding("utf-8"); filterChain.doFilter(servletRequest,servletResponse); } @Override public void destroy() { } }
第二步:在web.xml中配置過濾器
<filter> <filter-name>characterFilter</filter-name> <filter-class>characterFilter</filter-class> </filter> <filter-mapping> <filter-name>characterFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping><url-pattern>/*</url-pattern>代表所有要執行的檔案執行時先要進行該過濾器方法的過濾,把所有程式碼格改為utf-8。
儲存修改 在開啟伺服器的情況下重新整理頁面,獲取的就不是亂碼了。
宣告:原創文章,請勿轉載。