jsp編譯亂碼(jsp處理亂碼)

本文目錄一覽:

怎麼解決jsp中文亂碼問題,我要瘋了

1、JSP頁面出現的中英文亂碼:

我們的PageCharset.jsp頁面代碼如下所示:

[html] view plain copy

%@ page language=”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 copy

%@ page language=”java” import=”java.util.*” pageEncoding=”gb2312″%

html

head

titleURL傳遞參數中英文處理示例/title

/head

%

String param = request.getParameter(“param”);

%

body

a href=”URLCharset.jsp?param=’中文'”請單擊這個鏈接/a

您提交的這個參數為:%=param %

/body

/html

啟動tomcat運行結果出現url傳遞的中文亂碼:

這裡我們需要配置tomcat服務器文件,才能解決這個問題。具體方法是,在tomcat的conf目錄下找到server.xml配置文件,找到如下代碼

[html] view plain copy

span style=”font-size:18px”  Connector port=”8080″ protocol=”HTTP/1.1″

connectionTimeout=”20000″

redirectPort=”8443″  //span

在後面添加上編碼方式,URIEncoding=”gb2312″ 重新啟動tomcat問題就解決了。

3、表單提交中問亂碼

對於表單中提交的數據,可以用request.getPraramter(“”);方法來獲取,但是當表單中出現中文數據的時候就會出現亂碼。

我們的提交表單的頁面,FormCharset.jsp頁面如下:

[html] view plain copy

%@ page language=”java” contentType=”text/html; charset=GB18030″

pageEncoding=”GB18030″%

!DOCTYPE html PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN” “”

html

head

meta http-equiv=”Content-Type” content=”text/html; charset=GB18030″

titleForm中文處理示例/title

/head

body

下面是表單內容:

form action=”AcceptFormCharset.jsp” method=”post”

用戶名:input type=”text” name=”userName” size=”10″ /

密    碼:input type=”password” name=”password” size=”10″/

input type=”submit” value=”提交”/

/form

/body

/html

我們的AcceptFormCharset.jsp頁面:

[html] view plain copy

%@ page language=”java” contentType=”text/html; charset=GB18030″

pageEncoding=”GB18030″%

!DOCTYPE html PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN” “”

html

head

meta http-equiv=”Content-Type” content=”text/html; charset=GB18030″

titleForm中文處理示例/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 copy

%

String userName = request.getParameter(“userName”);

String passWord = request.getParameter(“password”);

out.println(“表單輸入的userName值為:” +  new String(userName.getBytes(“ISO-8859-1″),”gb2312″)+”br”);

out.println(“表單輸入的pasword值為:” + new String(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的解決中文亂碼問題的文章,在這裡就不贅述了。

需要強調的一點,開始使用Java model1模型的時候,我們在web.xml中配置只需要配置好jsp頁面就可以了,在model2模型中我們使用servlet作為控制器,我們就需要在Filter的配置文件web.xml中配置好servlet的設置,對所有的servlet處理的表單編碼進行設置。

[html] view plain copy

filter

filter-nameCharsetEncodingFilter/filter-name

filter-classcom.bjpowernode.drp.util.filter.CharsetEncodingFilter/filter-class

init-param

param-nameencoding/param-name

param-valueGBK/param-value

/init-param

/filter

filter-mapping

filter-nameCharsetEncodingFilter/filter-name

url-pattern*.jsp/url-pattern

/filter-mapping

filter-mapping

filter-nameCharsetEncodingFilter/filter-name

url-pattern/servlet/*/url-pattern

/filter-mapping

關於jsp被tomcat編譯後的網頁出現漢字亂碼。

%@ page contentType=”text/html; charset=UTF-8″ language=”java” %

然後用記事本打開該jsp文件,另存為,選擇編碼為UTF-8。

jsp中處理中文亂碼的解決方案有哪些

1.新建兩個JSP頁面

2

2.在c.jsp中新建一個表單

3

3.在d.jsp中接收這個值

4.運行c.jsp

5.輸入帶中文的參數,點擊提交

6.發現接收過來的中文是亂碼,英文正常

解釋下:JSP默認參數在傳輸過程中使用的編碼為ISO-8859-1

而兩個頁面使用的都是UTF-8 的編碼

7.在d.jsp中新增如下代碼

8.再次重複上邊的操作,發現中文正常了

9.把c.jsp中的Post 修改為get方式提交表單

10. 注意URL和中文亂碼,顯然上邊步驟7的方法不行了

11.修改d.jsp代碼如下

12.再次運行,一切正常

13.步驟11是從代碼上解決亂碼的問題,但是每次get方式都要這麼處理,顯得很麻煩。

還有一種就是修改tomcat的server.xml配置文件

參照tomcat幫助文檔中的/docs/config/index.html 文檔的useBodyEncodingForURI 屬性。

為Connector 節點添加useBodyEncodingForURI=”true” 屬性即可。

如何解決jsp中文變亂碼

Java的內核和class文件是基於unicode的,這使Java程序具有良好的跨平台性,但也帶來了一些中文亂碼問題的麻煩。原因主要有兩方面,Java和JSP文件本身編譯時產生的亂碼問題和Java程序於其他媒介交互產生的亂碼問題。首先Java(包括JSP)源文件中很可能包含有中文,而Java和JSP源文件的保存方式是基於位元組流的,如果Java和JSP編譯成class文件過程中,使用的編碼方式與源文件的編碼不一致,就會出現亂碼。基於這種亂碼,建議在Java文件中盡量不要寫中文(注釋部分不參與編譯,寫中文沒關係),如果必須寫的話,盡量手動帶參數-ecoding GBK或-ecoding gb2312或-ecoding UTF-8編譯;對於JSP,在文件頭加上%@ page contentType=”text/html;charset=GBK”%或

%@ page contentType=”text/html;charset=gb2312″%基本上就能解決這類亂碼問題。

jsp頁面中文亂碼,怎麼解決

剛開始學習jsp的程序員都會遇到這樣一個問題,就是網頁上的中文無法顯示.總結了以下幾條方法。

1、在jsp頁中加入一條語句:

%@ page contentType=”text/html;charset=gb2312″ %中文顯示就正常了。

2、對於從網頁中的文本框通過String parameter = request.getParameter(「parameter」);方式獲得的字符串,均是8859_1的編碼,

如果想把它顯示在網頁上就必須得用parameter = new String(parameter.getBytes(「8859_1」),」gb2312」)進行轉換,windows和linux這兩種系統都是一樣的。

有一個簡單方法,就是在 getParameter() 方法獲取參數之前,使用request.setCharacterEncoding(“GB2312”);,將提交的信息轉化為 GB2312 編碼。

3、但是對於將數據寫入數據庫的問題,採取的方式就不同了:

windows下,必須要採用該字符串轉換再插入數據庫,而linux下就不需要,而是直接把8859_1編碼的字符插入。

如果從數據庫中讀出的數據,對於windows因為在插入時已經做了轉換,所以讀出時已經是gb2312的,當把它顯示在網頁上時,不需要做編碼轉換,而 linux上的mysql中的數據是8859_1的所以要做編碼的轉換。

4、 如果你給某個字符串變量賦予一個中文字符串的值,那麼在你取出他時,在網頁上的顯示是不需要做字符轉換的,

但是如果你要在linux下做字符的比較,則還需要把字符做parameter = new String(parameter.getBytes(「gb2312」),」8859_1」)的轉換。

5、長江電力網站解決中文問題的方法是:

1)在catalina.sh文件中的相關位置添加下面一行

-Dfile.encoding=GBK \

2)在每個jsp文件的最前面添加下面兩行

%@ page contentType=”text/html; charset=GBK” %

%request.setCharacterEncoding(“GBK”);%

原創文章,作者:簡單一點,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/127812.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
簡單一點的頭像簡單一點
上一篇 2024-10-03 23:16
下一篇 2024-10-03 23:16

相關推薦

  • Python zipfile解壓文件亂碼處理

    本文主要介紹如何在Python中使用zipfile進行文件解壓的處理,同時詳細討論在解壓文件時可能出現的亂碼問題的各種解決辦法。 一、zipfile解壓文件亂碼問題的根本原因 在P…

    編程 2025-04-29
  • Python爬蟲亂碼問題

    在網絡爬蟲中,經常會遇到中文亂碼問題。雖然Python自帶了編碼轉換功能,但有時候會出現一些比較奇怪的情況。本文章將從多個方面對Python爬蟲亂碼問題進行詳細的闡述,並給出對應的…

    編程 2025-04-29
  • Python3亂碼轉中文

    本文將詳細介紹如何轉換Python3中的亂碼為中文字符,幫助Python3開發工程師更好的處理中文字符的問題。 一、Python3中文亂碼的原因 在Python3中,中文字符使用的…

    編程 2025-04-29
  • Win10的Powershell亂碼問題

    在Windows 10系統中,Powershell作為一種廣泛應用的命令行工具,被越來越多的人所熟知和使用,但是有時候會出現亂碼的情況,讓人十分困擾。本文將從多方面進行詳細闡述,幫…

    編程 2025-04-28
  • Axios請求數據亂碼問題解決

    本文將從以下三個方面詳細闡述Axios請求數據亂碼問題的原因和解決方法: 一、設置請求頭 Axios請求數據亂碼的原因可能是因為請求時沒有設置請求頭的編碼方式,而且默認的編碼方式是…

    編程 2025-04-28
  • 為什麼web項目的歡迎頁必須是jsp?

    在web項目中,歡迎頁通常是用戶首次訪問的頁面。而對於這個頁面的選擇,我們通常會選擇jsp作為歡迎頁,其原因是什麼呢? 一、JSP的優勢 JSP與HTML和CSS的結合,可以實現動…

    編程 2025-04-25
  • 解決Visual Studio中文亂碼問題的方法

    在使用Visual Studio進行編程時,常常會遇到中文亂碼的問題。這些問題可能會導致代碼難以理解和維護,因此我們需要找到有效的解決方案,以避免出現這些問題。在本文中,我們將介紹…

    編程 2025-04-24
  • Matlab注釋亂碼問題分析

    一、UTF-8編碼問題導致注釋亂碼 Matlab默認使用UTF-8編碼方式,當我們在注釋中輸入非ASCII字符時,可能會出現亂碼的情況。解決這個問題的方法是使用unicode編碼方…

    編程 2025-04-23
  • Idea輸出亂碼問題解決指南

    一、亂碼的原因 在我們使用IDEA進行開發的過程中,常常會出現輸出亂碼的問題,這給我們的工作帶來了很大的困擾。那麼這些亂碼問題到底是哪些原因造成的呢? 首先,有可能是因為源代碼中存…

    編程 2025-04-23
  • JSP菜鳥教程詳解

    一、JSP介紹 JSP全稱Java Server Pages,是一種動態網頁技術,它可以將Java代碼嵌入HTML頁面,實現動態頁面的功能。 下面是一個JSP頁面的簡單示例: He…

    編程 2025-04-12

發表回復

登錄後才能評論