⑴ Jsp亂碼問題
改為GBK試試
⑵ JSP中文亂碼
在jsp最上邊的
<%@ page language="java" import="java.util.*,supercms.*,supershopmanager.*" pageEncoding="utf-8"%>
改成
<%@ page language="java" import="java.util.*,supercms.*,supershopmanager.*" pageEncoding="gbk"%>
應該就可以了。
要是還不行,那就是傳過來的值有問題。
就要用別的方法轉
⑶ 關於JSP亂碼
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
在你的jsp頁面加上上面這句
⑷ 淺談如何解決Java/JSP中文亂碼問題
原因主要有兩方面,Java和JSP文件本身編譯時產生的亂碼問題和Java程序於其他媒介交互產生的亂碼問題。首先Java(包括JSP)源文件中很可能包含有中文,而Java和JSP源文件的保存方式是基於位元組流的,如果Java和JSP編譯成class文件過程中,使用的編碼方式與源文件的編碼不一致,就會出現亂碼。基於這種亂碼,建議在Java文件中盡量不要寫中文(注釋部分不參與編譯,寫中文沒關系),如果必須寫的話,盡量手動帶參數-ecoding GBK或-ecoding gb2312編譯;對於JSP,在文件頭加上或基本上就能解決這類亂碼問題。本文要重點討論的是第二類亂碼,即Java程序與其他存儲媒介交互時產生的亂碼。很多存儲媒介,如資料庫,文件,流等的存儲方式都是基於位元組流的,Java程序與這些媒介交互時就會發生字元(char)與位元組(byte)之間的轉換,具體情況如下:從頁面form提交數據到java程序 byte->char從java程序到頁面顯示 char?>byte從資料庫到java程序 byte?>char從java程序到資料庫 char?>byte從文件到java程序 byte->char從java程序到文件 char->byte從流到java程序 byte->char從java程序到流 char->byte如果在以上轉換過程中使用的編碼方式與位元組原有的編碼不一致,很可能就會出現亂碼。二、Java/JSP中文亂碼的解決方法前面已經提到了Java程序與其他媒介交互時字元和位元組的轉換過程,如果這些轉換過程中容易產生亂碼。解決這些亂碼問題的關鍵在於確保轉換時使用的編碼方式與位元組原有的編碼方式保持一致,下面分別論述(Java或JSP自身產生的亂碼請參看第一部分)。1、JSP與頁面參數之間的亂碼JSP獲取頁面參數時一般採用系統默認的編碼方式,如果頁面參數的編碼類型和系統默認的編碼類型不一致,很可能就會出現亂碼。解決這類亂碼問題的基本方法是在頁面獲取參數之前,強制指定request獲取參數的編碼方式:request.setCharacterEncoding("GBK")或 request.setCharacterEncoding("gb2312")。如果在JSP將變數輸出到頁面時出現了亂碼,可以通過設置 response.setContentType("text/html;charset=GBK")或 response.setContentType("text/html;charset=gb2312")解決。如果不想在每個文件里都寫這樣兩句話,更簡潔的辦法是使用Servlet規范中的過慮器指定編碼,過濾器的在web.xml中的典型配置和主要代碼如下:web.xml: CharacterEncodingFilter net.vschool.web.CharacterEncodingFilter encodingGBK CharacterEncodingFilter /* CharacterEncodingFilter.java: public class CharacterEncodingFilter implements Filter { protected String encoding = null; public void init(FilterConfig filterConfig) throws ServletException { this.encoding = filterConfig.getInitParameter("encoding"); } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { request.setCharacterEncoding(encoding); response.setContentType("text/html;charset="+encoding); chain.doFilter(request, response); } } 2、Java與資料庫之間的亂碼大部分資料庫都支持以unicode編碼方式,所以解決Java與資料庫之間的亂碼問題比較明智的方式是直接使用unicode編碼與資料庫交互。很多資料庫驅動自動支持unicode,如Microsoft的SQLServer驅動。其他大部分資料庫驅動,可以在驅動的url參數中指定,如如mm的mysql驅動:jdbc:mysql://localhost /WEBCLDB?useUnicode=true&characterEncoding=GBK。3、Java與文件/流之間的亂碼Java讀寫文件最常用的類是 FileInputStream/FileOutputStream和FileReader/FileWriter。其中FileInputStream 和FileOutputStream是基於位元組流的,常用於讀寫二進制文件。讀寫字元文件建議使用基於字元的FileReader和 FileWriter,省去了位元組與字元之間的轉換。但這兩個類的構造函數默認使用系統的編碼方式,如果文件內容與系統編碼方式不一致,可能會出現亂碼。在這種情況下,建議使用FileReader和FileWriter的父類:InputStreamReader/OutputStreamWriter,它們也是基於字元的,但在構造函數中可以指定編碼類型:InputStreamReader(InputStream in, Charset cs) 和OutputStreamWriter(OutputStream out, Charset cs)。4、其他上面提到的方法應該能解決大部分亂碼問題,如果在其他地方還出現亂碼,可能需要手動修改代碼。解決Java亂碼問題的關鍵在於在位元組與字元的轉換過程中,你必須知道原來位元組或轉換後的位元組的編碼方式,轉換時採用的編碼必須與這個編碼方式保持一致。
⑸ Eclipse中jsp頁面的亂碼
1、選擇文件 右擊 屬性-改為utf-8.
如圖:
2、在文件的開頭 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 這個地方也改為utf-8.
3、如果還不行的話,用notepad++打開。看看能不能顯示正常。在拷過去
⑹ 解決jsp亂碼的java類
把byte[] str_2=str_1.getBytes("ISO8859-1");
給改成:byte[] str_2=str_1.getBytes("gb2312");
⑺ java WEB項目的jsp頁面顯示的時候亂碼。在別人電腦上都顯示的是正常的,在我這里就是亂碼
1、右鍵項目,properties,選擇編碼
⑻ JSP中文亂碼問題
1保證Web項目所在容器支持中文,個人認為是將Tomcat改為支持gb2312.
打開文件夾,找到server.xml修改
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
reloadable="true" redirectPort="8443" reloadable="true" URIEncoding="gb2312" />
rereloadable="true"設置熱啟動,URIEncoding="gb2312"設置字元
2.前台頁面
<%@ page language="java" pageEncoding="gb2312"%>
3.添加過濾器
本人將前三種都修改,重新啟動,資料庫的插入依然顯示???,之後使用Filter類成功。
據稱過濾類比較穩定,推薦使用。
具體過程,網上找的方法
package com.strutsLogin.util; 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 SetCharacterEncodingFilter implements Filter {
protected String encoding = null;
protected FilterConfig filterConfig = null;
protected boolean ignore = true;
public void destroy() {
this.encoding = null;
this.filterConfig = null;
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
if (ignore || (request.getCharacterEncoding() == null)) {
String encoding = selectEncoding(request);
if (encoding != null)
request.setCharacterEncoding(encoding);
}
// Pass control on to the next filter
chain.doFilter(request, response);
}
public void init(FilterConfig filterConfig) throws ServletException {
this.filterConfig = filterConfig;
this.encoding = filterConfig.getInitParameter("encoding");
String value = filterConfig.getInitParameter("ignore");
if (value == null)
this.ignore = true;
else if (value.equalsIgnoreCase("true"))
this.ignore = true;
else if (value.equalsIgnoreCase("yes"))
this.ignore = true;
else
this.ignore = false;
}
protected String selectEncoding(ServletRequest request) {
return (this.encoding);
}
}//EOC
該代碼來自於www.javawebstudio.com,特此感謝!
然後我們在web.xml中加一些配置,就可以了,配置如下:
<filter>
<filter-name>Set Character Encoding</filter-name>
<filter-class>javawebstudio.struts_db.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>GB2312</param-value>
</init-param>
<init-param>
<param-name>ignore</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Set Character Encoding</filter-name>
<servlet-name>action</servlet-name>
</filter-mapping>
放在web.xml的合適位置。一般在最後,<jsp-config>標簽之前(如果有的話)放在<servlet>之前,否則報錯
⑼ JAVA JSP 頁面 亂碼問題
頁面也需要設置轉碼的:
頁面:(.jsp)
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
response.setContentType("text/html;charset=UTF-8");
處理文件:(.java)
轉碼的三種方法:
A 接受參數時進行編碼轉換
String str = new String(request.getParameter("something").getBytes("ISO-8859-1"),"utf-8"); 這樣的話,每一個參數都必須這樣進行轉碼。很麻煩。但確實可以拿到漢字。
B 在請求頁面上開始處,執行請求的編碼代碼, request.setCharacterEncoding("UTF-8"),把提交內容的字元集設為UTF-8。這樣的話,接受此參數的頁面就不必在轉碼了。直接使用
String str = request.getParameter("something");即可得到漢字參數。但每頁都需要執行這句話。
這個方法也就對post提交的有效果,對於get提交和上傳文件時的enctype="multipart/form-data"是無效的。稍後下面單獨對這個兩個的亂碼情況再進行說明。
C 為了避免每頁都要寫request.setCharacterEncoding("UTF-8"),建議使用過濾器對所有jsp進行編碼處理。
新手可以暫時不考慮過濾器的方法,過濾器一般都會涉及到配置開發,要修改web.xml,還算是比較麻煩的,建議接觸java一段時間後再考慮使用過濾器的方法。或者如果應用了struts框架,可以查看struts的轉碼過濾器配置。
⑽ java文件中 一個字元串傳到jsp中, 再傳到java中就亂碼了 怎麼解決!
方法一:設置 request 和 response 的編碼 [ 頁面編碼必須為 u8 ]
request.setCharacterEncoding("UTF-8");//傳值編碼
response.setContentType("text/html;charset=UTF-8");//設置傳輸編碼
方法二:
String str1=傳來的數據。
String ss=new String(str1.getBytes("ISO-8859-1"),"utf-8"); //轉碼UTF8