Java Web開(kāi)發(fā)項(xiàng)目中中文亂碼解決方法匯總
Java Web項(xiàng)目中,解決中文亂碼方法總結(jié)如下
第一種情況:調(diào)用jsp頁(yè)面中文顯示亂碼
問(wèn)題描述:通過(guò)瀏覽器調(diào)用jsp頁(yè)面,在瀏覽器中顯示的中文內(nèi)容出現(xiàn)亂碼。
解決方法:首先確認(rèn)本jsp在編輯器中保存文件內(nèi)容時(shí),使用的是utf-8的編碼格式,然后在jsp頁(yè)面的開(kāi)始處添加<%@ pageEncoding="utf-8"%>就可以解決這種中文亂碼問(wèn)題
第二種情況:調(diào)用servlet頁(yè)面顯示亂碼
問(wèn)題描述:通過(guò)瀏覽器調(diào)用servlet,servlet在瀏覽器中顯示的內(nèi)容出現(xiàn)亂碼。
解決方法:在servlet使用response對(duì)象輸出前,先執(zhí)行response.setContentType("text/html;charset=utf-8");設(shè)定輸出內(nèi)容的編碼為utf-8。
第三種情況:post表單傳遞參數(shù)亂碼
問(wèn)題描述:通過(guò)jsp,html,或servlet中的表單元素把參數(shù)提交給對(duì)應(yīng)的jsp或者servlet時(shí),在接收的jsp或servlet中接收到的參數(shù)中文顯示亂碼。
例如:
提交jsp代碼如下:
<%@ page language="java" pageEncoding="utf-8"%> <html> <head> <title>輸入表單</title> </head> <body> <form id="inputForm" name="inputForm" method="post" action="display.jsp"> 用戶(hù)名:<input type="text" name="username"/><br/> 密 碼 :<input type="password" name="password"/><br/> <input type="submit" name="submit" value="提交"/> </form> </body> </html>
接收參數(shù)的jsp代碼如下:
<% @ page language="java" pageEncoding="utf-8"%>
<html>
<head>
<tilte>接收表單</title>
</head>
<body>
<% 在這里插入
request.setCharacterEncoding("utf-8");
%>
用戶(hù)名:<%=request.getParameter("username")%><br/>
密 碼:<%=request.getParameter("password")%><br/>
</body>
</html>
解決方法:在接收post提交的參數(shù)前,使用request.setCharacterEncoding("utf-8")設(shè)定接收參數(shù)的內(nèi)容格式為utf-8編碼。見(jiàn)接收表單中的插入內(nèi)容即可。當(dāng)然這種亂碼問(wèn)題最好使用中文過(guò)濾器的方法最好。
第四種情況:URI方式傳遞參數(shù)亂碼
問(wèn)題描述:使用表單傳遞參數(shù),可以通過(guò)post或get方式,不適用表單,還可以使用鏈接方式傳遞參數(shù),這種傳遞參數(shù)方式本質(zhì)上就是get方式傳遞參數(shù),這種方式中傳遞的參數(shù)出現(xiàn)中文時(shí)也可能出現(xiàn)亂碼。
如:
解決方法:?jiǎn)栴}本質(zhì)是get方式傳遞的參數(shù)內(nèi)容默認(rèn)編碼方式問(wèn)ISO8859-1,而且使用request.setCharacterEncoding("utf-8")也無(wú)法解決問(wèn)題,要解決這個(gè)問(wèn)題,修改tomcat服務(wù)器的配置文件。修改tomcat目錄下的conf/server.xml文件的第43行:
修改前內(nèi)容:
<Connector port="8080" protocol="HTTP/1.1" maxThreads="150" connectionTimeout="200000" redirecPort="8443"/>
修改后內(nèi)容:
<Connector port="8080" protocol="HTTP/1.1" maxThreads="150" connectionTimeout="200000" redirecPort="8443" URIEncoding="utf-8"/>
這樣就可以解決這種類(lèi)型的亂碼問(wèn)題。
第五種情況:
問(wèn)題描述:在使用一些類(lèi)庫(kù)或者框架時(shí),為了實(shí)現(xiàn)頁(yè)面內(nèi)容國(guó)際化,需要編寫(xiě)對(duì)應(yīng)的properties文件。而properties文件中的中文內(nèi)容在顯示的時(shí)候也會(huì)出現(xiàn)亂碼。
解決方法:這個(gè)亂碼問(wèn)題可以通過(guò)jdk中的native2ascii工具解決。使用如下命令:
出現(xiàn)亂碼問(wèn)題的原因是因?yàn)閖ava編譯器只能處理Latin-1或unicode編碼的字符文件。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助。
相關(guān)文章
Java多線(xiàn)程-線(xiàn)程的同步與鎖的問(wèn)題
線(xiàn)程的同步是為了防止多個(gè)線(xiàn)程訪(fǎng)問(wèn)一個(gè)數(shù)據(jù)對(duì)象時(shí),對(duì)數(shù)據(jù)造成的破壞。本篇文章主要介紹了Java多線(xiàn)程-線(xiàn)程的同步與鎖的問(wèn)題,有興趣的可以了解一下。2016-11-11
用Java集合中的Collections.sort方法如何對(duì)list排序(兩種方法)
本文通過(guò)兩種方法給大家介紹java集合中的Collections.sort方法對(duì)list排序,第一種方式是list中的對(duì)象實(shí)現(xiàn)Comparable接口,第二種方法是根據(jù)Collections.sort重載方法實(shí)現(xiàn),對(duì)collections.sort方法感興趣的朋友一起學(xué)習(xí)吧2015-10-10
Java對(duì)稱(chēng)加密算法DES實(shí)例詳解
這篇文章主要介紹了Java對(duì)稱(chēng)加密算法DES,結(jié)合實(shí)例形式詳細(xì)分析了java DES算法的概念、原理、實(shí)現(xiàn)方法與應(yīng)用場(chǎng)景,需要的朋友可以參考下2019-09-09
淺談Servlet的Cookie和Session機(jī)制
雖然session機(jī)制在web應(yīng)用程序中被采用已經(jīng)很長(zhǎng)時(shí)間了,但是仍然有很多人不清楚session機(jī)制的本質(zhì),以至不能正確的應(yīng)用這一技術(shù).本文將詳細(xì)討論session以及cookie的工作機(jī)制,需要的朋友可以參考下2021-05-05
java實(shí)現(xiàn)水果超市管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)水果超市管理系統(tǒng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-01-01
Java實(shí)現(xiàn)在PPT中創(chuàng)建SmartArt圖形的示例代碼
SmartArt其實(shí)就是一個(gè)文字的可視化工具,用戶(hù)可在PowerPoint,Word,Excel中使用該特性創(chuàng)建各種圖形圖表。本文就將為您介紹如何通過(guò)Java應(yīng)用程序在PPT中創(chuàng)建SmartArt圖形,需要的可以參考一下2023-04-04

