Ⅰ 怎麼解決jsp中文亂碼問題,我要瘋了
1、JSP頁面出現的中英文亂碼:
我們的PageCharset.jsp頁面代碼如下所示:
[html]view plain
<%@pagelanguage="java"import="java.util.*"%>
<html>
<head>
<title>中文顯示示例</title>
</head>
<body>
中文顯示的示例。
<%
out.print("這里是用jsp輸出的中文");
%>
</body>
</html>
當我們在保存我們的文件的時候會出現下面的提示:
整因為在我們的MyEclipse中默認的編碼為ISO-8859-1,而ISO-8859-1不支持中文的編碼,所以jsp頁面代碼如果出現中文就不能保存了。對於這樣的錯誤,我們只要在頁面上加上支持中文的編碼格式就可以了,在jsp頁面中加上pageEncoding=「gb2132」 支持中頁面的編碼格式就可以了。這樣我們就能正常保存我們的jsp源文件了。
2、URL傳遞參數中文亂碼
[html]view plain
<%@pagelanguage="java"import="java.util.*"pageEncoding="gb2312"%>
<html>
<head>
<title>URL傳遞參數中英文處理示例</title>
</head>
<%
Stringparam=request.getParameter("param");
%>
<body>
<ahref="URLCharset.jsp?param='中文'">請單擊這個鏈接</a>
您提交的這個參數為:<%=param%>
</body>
</html>
啟動tomcat運行結果出現url傳遞的中文亂碼:
這里我們需要配置tomcat伺服器文件,才能解決這個問題。具體方法是,在tomcat的conf目錄下找到server.xml配置文件,找到如下代碼
[html]view plain
<spanstyle="font-size:18px"><Connectorport="8080"protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"/></span>
在後面添加上編碼方式,URIEncoding="gb2312" 重新啟動tomcat問題就解決了。
3、表單提交中問亂碼
對於表單中提交的數據,可以用request.getPraramter("");方法來獲取,但是當表單中出現中文數據的時候就會出現亂碼。
我們的提交表單的頁面,FormCharset.jsp頁面如下:
[html]view plain
<%@pagelanguage="java"contentType="text/html;charset=GB18030"
pageEncoding="GB18030"%>
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=GB18030">
<title>Form中文處理示例</title>
</head>
<body>
下面是表單內容:
<formaction="AcceptFormCharset.jsp"method="post">
用戶名:<inputtype="text"name="userName"size="10"/>
<inputtype="submit"value="提交"/>
</form>
</body>
</html>
我們的AcceptFormCharset.jsp頁面:
[html]view plain
<%@pagelanguage="java"contentType="text/html;charset=GB18030"
pageEncoding="GB18030"%>
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=GB18030">
<title>Form中文處理示例</title>
</head>
<body>
下面是表單提交以後request取到的表單的數據:<br>
<%
out.println("表單輸入的userName值為:"+request.getParameter("userName")+"<br>");
out.println("表單輸入的pasword值為:"+request.getParameter("password")+"<br>");
%>
</body>
</html>
提交表單:
結果如下:
我們看到我們在表單中的中文數據出現了亂碼,為什麼楚翔這種情況呢?是因為我們的tomcat中,對於以post方式提交的表單編碼格式默認為ISO-8859-1的編碼格式,而這種編碼格式是不能編碼中文的,所以就會出現亂碼的現象了。對於這種情況,我們可以對表單中的數據進行處理,在取得表單參數的時候設置編碼方式,我們更改了我們的接受表單數據的頁面如下所示:
[html]view plain
<%
StringuserName=request.getParameter("userName");
StringpassWord=request.getParameter("password");
out.println("表單輸入的userName值為:"+newString(userName.getBytes("ISO-8859-1"),"gb2312")+"<br>");
out.println("表單輸入的pasword值為:"+newString(passWord.getBytes("ISO-8859-1"),"gb2312")+"<br>");
%>
這樣就得到我們想要的效果啦:
4、資料庫操作中文亂碼
我們在建立資料庫的時候,最好是能選擇支持中文編碼格式,最好是能和jsp頁面編碼格式保持一致,這樣就盡可能的減少資料庫操作中文亂碼的問題,最開始的連接資料庫的時候,編寫好資料庫的編碼策略,也就是使用這種形式的URL:jdbc:Oracle:thin:@localhost:1521:TEST;userEnicode=true;characterEncoding=gb2312; 這樣我們選擇的資料庫的編碼和我們的jsp編碼就一致了。
寫入到資料庫的時候,資料庫中中文亂碼:
但是如果我們在最開始的時候沒有對資料庫的編碼進行設置,並且我們的資料庫中已經有大量的數據的話,我們再向資料庫中寫入中文數據,資料庫中的中文顯示為亂碼。在寫入數據的時候出現亂碼,是因為我們在處理表單的時候沒有對字元的編碼設置,對於這種情況,我們在jsp中或servlet中加入:
rquest.setCharacterEncoding("gb2312");//處理表單請求的時候設置編碼。
這樣再看我們的資料庫,插入的中文欄位就不會亂碼了。
從資料庫中讀出中文亂碼:
資料庫中的中文出現亂碼,就是在讀取資料庫的時候進行轉碼,這樣顯示就不會亂碼了。我們整理這樣的一個轉碼函數:
public String encoder(String str) throws UnsupportedEncodingException
{
String result = new String(str.getBytes("ISO-ISO-8859-1)"),"gb2312");
}
5 在myeclipse開發工具中打開中文顯示亂碼
在myeclipse中默認的編碼方式為ISO-8859-1,所以打開有其他編譯器編碼的jsp頁面就會出現亂碼,是因為兩個編譯器保存源文件編碼格式不同,在UltralEdit可以支持中文,但是在Eclipse對jsp文件的保存方式為ISO-8895-1,這種編碼不支持中文,所以就會出現亂碼。
對於這種情況,我們可以更改myeclipse默認的編碼方案,myeclipse->Window->Preferences->General->Content types->Test->JSP
這樣問題就解決啦!
6 Filter批量設置編碼格式
我們對於每一個jsp或servlet我們都要設置編碼格式,效率有些低,我們的servlet的Filter解決了我們的問題。在前篇寫過Filter的解決中文亂碼問題的文章,在這里就不贅述了。http://blog.csdn.NET/lovesummerforever/article/details/9924413
需要強調的一點,開始使用Javamodel1模型的時候,我們在web.xml中配置只需要配置好jsp頁面就可以了,在model2模型中我們使用servlet作為控制器,我們就需要在Filter的配置文件web.xml中配置好servlet的設置,對所有的servlet處理的表單編碼進行設置。
[html]view plain
<filter>
<filter-name>CharsetEncodingFilter</filter-name>
<filter-class>com.bjpowernode.drp.util.filter.CharsetEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>GBK</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharsetEncodingFilter</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>CharsetEncodingFilter</filter-name>
<url-pattern>/servlet/*</url-pattern>
</filter-mapping>
Ⅱ 如何徹底解決jsp頁面中文亂碼及資料庫亂碼
jsp讀取數據亂碼原因如下:
1、JSP連接資料庫語句指定的編碼不正確
解決方案:在JSP連接資料庫的語句中,帶上useUnicode=true&characterEncoding=UTF-8&autoReconnect=true
2、JSP頁面沒有指定數據提交的編碼,就會造成亂碼:
解決方案:這種亂碼的情況,只需在頁面開頭加上request.setCharacterEncoding("GBK"); 指定提交的即可。
Ⅲ java中的亂碼怎麼解決啊 中文注釋亂碼
jsp亂碼:
增加:charset="UTF-8"
java亂碼:
注釋亂碼解決方法:
依次點擊:
右鍵項目--->Properties--->Resource--->Text file encoding ----->Others --->選擇【UTF-8】
然後即可解決注釋亂碼問題
Ⅳ jsp中處理中文亂碼的解決方案有哪些
JSP 中文亂碼處理解決方案
初學JSP,尤其是環境(GlassFish默認UTF-8,則不存在此類問題),經常會因為中文漢字字元集設置問題導致中文亂碼,本文就這一問題提出解決方案,解決中文亂碼問題,供各位參考,我採用的方案是統一字元集至UTF-8,同時避免GB2312所帶來的中文字元集不夠用的隱患,需注意的地方有三點,默認情況下是英文字元集。
1、Tomcat 的 server.xml 文件,設置伺服器埠工作方式
2、Servlet 和 JavaBean 對字元串字元集處理的統一
3、JSP頁面的字元集統一
完成這三點統一,中文想亂碼都難,如果使用MySQL的話,數據表也需要做UTF-8統一。
修改Tomcat的server.xml文件,該文件位於 tomcat/conf,紅色部分為添加部分,也就是當前使用的HTTP埠的連接方式的設置。
找到Connector 標簽,使 Tomcat 伺服器以UTF-8模式進行工作,從底層對亂碼進行處理,修改如下:
<Connector URIEncoding="utf-8" port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
其它應用伺服器例如GlassFish默認支持utf-8,伺服器本身無需設置,只須代碼上注意即可。
運行代碼內設置如下:
JavaBean 和 Servlet 內需要處理中文的地方之前,或者所有函數最前端加上
request.setCharacterEncoding ("UTF-8");
response.setCharacterEncoding ("UTF-8");
避免在 JavaBean 和 Servlet 內出現漢字亂碼。
JSP代碼中的 JAVA 字元編碼設置,在頁面上對亂碼進行處理。
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
紅色為制定JSP處理字元採用UTF-8編碼處理方式。
<%request.setCharacterEncoding ("UTF-8");%>
JSP內JAVA代碼設定接收參數為UTF-8編碼
JSP 內 HTML 頭的編碼設置,頁面處理以UTF-8,避免顯示亂碼。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Note Page</title>
</head>
<body>
……
……
紅色部分UTF-8制定HTML頁面使用的編碼方式
<form action=index.jsp method="post"><h3>Please Input Your Name:</h3>
<input type="text" size="30" name="中文名字" value="" >
<input type=submit value="提交">
</form>
接收代碼如下:
<%
// 通過二進制傳遞的參數,因為UTF-8的設置,無須轉換,直接中文操作,而不會出現亂碼。
String temp1 = request.getParameter ("yourname");
……
%>
採用get方式略有不同,若只採用以上設定,遇中文參數,因編碼不同,會導致部分文字信息丟失,所以在提交前務必進行編碼,這里用到兩個函數java.net.URLDecoder.decode 和java.net.URLDecoder.encode,分別是編碼和解碼。
<a href="
<%=request.getContextPath()%>/index.jsp?傳遞的參數名=
<%=java.net.URLEncoder.encode (傳遞的漢字變數,"UTF-8")%>">
<%=超鏈接熱點顯示內容%>
</a>
作為參數傳遞的中文,由 java.net.URLEncoder.encode函數將要發送的變數解析為16進制數字編碼,進行URL傳遞,接收代碼如下:
<%String str = request.getParameter ("傳遞的參數名");%>
由此,獲得參數後的 str 內將是正確的中文信息,完全避免了亂碼的顯示。
可用 java.net.URLDecoder.decode 函數
例如
<%
String str1 = java.net.URLDecoder.decode(request.getParameter("傳遞的參數名"),"UTF-8");
%>
完畢將完美解決中文字元參數亂碼問題。
Ⅳ Eclipse中jsp頁面的亂碼
通過下面三個大類解決。
一. 設置工作空間的編碼
1點擊菜單欄中的窗口(內容Window)— —選項(Preferences)。
2點擊常規(General)— —工作空間(Wordspace),然後在右側的文本文件編碼格式(Text file encoding)中選擇想要設置的編碼格式,系統默認的格式為GBK。
二. 設置項目的編碼
1如果其他的項目中不存在亂碼問題,只是個別項目顯示時出現亂碼,那麼不需要設置工作空間的編碼,只需要修改項目的編碼即可。
2選中項目後,右鍵點擊,在彈出的菜單中點擊屬性(Properties)。
3在彈出的屬性窗口中,選擇資源(Resource)— —點擊選擇Other(其他),然後選擇想要的編碼格式。
三. 設置單個文件的編碼
只是個別文件出現了亂碼,那麼設置個別文件的編碼格式就可以解決問題了。選中有亂碼的文件,然後點擊右鍵。在彈出的菜單中選擇屬性(Properties)。
在彈出的屬性窗口中選擇資源,點擊Other(其他)後設置個別文件的編碼方式。
Ⅵ 在jsp文件中的html顯示亂碼怎麼解決
在jsp文件中的html顯示亂碼是因為服務端和客戶端的編碼不一致導致的。
如果Java和JSP編譯成class文件過程中,使用的編碼方式與源文件的編碼不一致,就會出現亂碼。
解決辦法:
1、未指定使用字元集編碼
下面的顯示頁面(display.jsp)就出現亂碼:
<html>
<head>
<title>JSP的中文處理</title>
<meta http-equiv="Content-Type" content="text/html charset=gb2312">
</head>
<body>
<%out.print("JSP的中文處理");%>
</body>
</html>
只要在頁面開始地方用下面代碼指定字元集編碼即可,在JSP頁面中指定編碼方式(gb2312),和瀏覽器解碼方式設置相同,即在頁面的第一行加上:
<%@ page contentType="text/html; charset=gb2312"%>,就可以消除亂碼了。
完整頁面如下:
<%@ page contentType="text/html; charset=gb2312"%>
<html>
<head>
<title>JSP的中文處理</title>
<meta http-equiv="Content-Type" content="text/html charset=gb2312">
</head>
<body>
<%out.print("JSP的中文處理");%>
</body>
</html>
2、 編碼字元集設置不一致
<%@ page language="java" pageEncoding="gb2312"%>
<%@ page contentType="text/html;charset=iso8859-1"%>
<html>
<head>
<title>JSP的中文處理</title>
<meta http-equiv="Content-Type" content="text/html charset=gb2312">
</head>
<body>
<%out.print("JSP的中文處理");%>
</body>
</html>
第一處<%@ page language="java" pageEncoding="gb2312"%>的編碼格式為jsp文件的存儲格式。Eclipse會根據這個編碼格式保存文件。並編譯jsp文件,包括裡面的漢字。
第二處編碼為解碼格式。因為存為gb2312的文件被解碼為iso8859-1,這樣如有中文肯定出亂碼。也就是必須一致。而第二處所在的這一行,可以沒有。預設也是使用iso8859-1的編碼格式。所以如果沒有這一行的話,也會出現亂碼。必須一致才可以。
第三處編碼為控制瀏覽器的解碼方式。如果前面的解碼都一致並且無誤的話,這個編碼格式用不用設置都可以。有的網頁出現亂碼,就是因為瀏覽器不能確定使用哪種編碼格式。因為頁面有時候會嵌入頁面,導致瀏覽器混淆了編碼格式出現了亂碼。
完整解決代碼如下:
<%@ page language="java" pageEncoding="gb2312"%>
<%@ page contentType="text/html;charset= gb2312"%>
<html>
<head>
<title>JSP的中文處理</title>
<meta http-equiv="Content-Type" content="text/html charset=gb2312">
</head>
<body>
<%out.print("JSP的中文處理");%>
</body>
</html>
Ⅶ 解決:JSP頁面取出資料庫中的中文出現亂碼
jsp讀取數據亂碼原因如下:
1、JSP連接資料庫語句指定的編碼不正確
解決方案:在JSP連接資料庫的版語句中,帶上權useUnicode=true&characterEncoding=UTF-8&autoReconnect=true
2、JSP頁面沒有指定數據提交的編碼,就會造成亂碼:
解決方案:這種亂碼的情況,只需在頁面開頭加上request.setCharacterEncoding("GBK"); 指定提交的即可。
Ⅷ 關於jsp被tomcat編譯後的網頁出現漢字亂碼。
jsp亂碼原因主要有兩方面,Java和JSP文件本身編譯時產生的亂碼問題和Java程序於其他媒介交互產生的亂碼問題。
一、首先Java(包括JSP)源文件中很可能包含有中文,而Java和JSP源文件的保存方式是基於位元組流的,如果Java和JSP編譯成class文件過程中,使用的編碼方式與源文件的編碼不一致,就會出現亂碼。
基於這種亂碼,建議在Java文件中盡量不要寫中文(注釋部分不參與編譯,寫中文沒關系),如果必須寫的話,盡量手動帶參數-ecoding GBK或-ecoding gb2312編譯;對於JSP,在文件頭加上<%@ page contentType="text/html;charset=GBK"%>或<%@ page contentType="text/html;charset=gb2312"%>基本上就能解決這類亂碼問題。
重點介紹第二類亂碼,即Java程序與其他存儲媒介交互時產生的亂碼。很多存儲媒介,如資料庫,文件,流等的存儲方式都是基於位元組流的,Java程序與這些媒介交互時就會發生字元(char)與位元組(byte)之間的轉換,例如從頁面提交表單中提交的數據在Java程序里顯示亂碼等情況。
如果在以上轉換過程中使用的編碼方式與位元組原有的編碼不一致,很可能就會出現亂碼。
二、解決方法
對於流行的Tomcat來說,有以下兩種解決方法:
1) 更改 D:\Tomcat\conf\server.xml,指定瀏覽器的編碼格式為「簡體中文」:
方法是找到 server.xml 中的
<Connector port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" URIEncoding='GBK' />
可以這樣驗證你的更改是否成功:在更改前,在你出現亂碼的頁面的IE瀏覽器,點擊菜單「查看|編碼」,會發現「西歐(ISO)」處於選中狀態。而更改後,點擊菜單「查看|編碼」,會發現「簡體中文(GB2312)」處於選中狀態。
b)java程序要這么修改:
public class ThreeParams extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html; charset=GBK");
...
}
}
response.setContentType("text/html; charset=GBK");這句話的作用是讓瀏覽器把Unicode字元轉換為GBK字元。這樣頁面的內容和瀏覽器的顯示模式都設成了GBK,就不會亂碼了。
Ⅸ jsp怎麼解決中文亂碼的問題
1.通過瀏覽器調用JSP頁面,在客戶端瀏覽器中所有的中文內容出現亂碼;解決方案:替換ISO-8859-1,修改頁面編碼為UTF-8,ujiuye
3.通過瀏覽器調用Servlet,Servlet在瀏覽器中顯示內容出現亂碼;解決方案:在Servlet使用response在輸出內容之前,先執行response....
5.提交頁面表單元素給對應的JSP頁面或者Servelt後,接收方出現表單數據中文值亂碼;解決方案:在接收POST提交的參數之前,使用request.setCharacterEncoding(「UTF-8")設定接收參數的內容使用UTF-8編碼 ,
7用Get方式傳遞參數,中文字元會出現亂碼; 解決方案:Get提交默認是以ISO88591傳遞,如果容器沒有做配置修改,程序則需要手工進行編碼轉換