我"a.jsp?param=中文"傳遞參數,另一個頁面request.getParameter(param);接收此參數,我把Tomcat目錄conf目錄server.xml中加入一條URIEncoding="gb2312"
這個接收到的參數就不會出現亂碼了!
可是我頁面中又要開啟中文pdf檔案的連結,如點擊“學習.pdf”檔案便開啟此pdf文檔,此時頁面報錯如下:
HTTP Status 404 - /Data/%E9%A3%9E%E8%A1%8C%E6%89%8B%E5%86%8C/%E9%A3%9E%E8%A1%8C.pdf
--------------------------------------------------------------------------------
type Status report
message /Data/%E9%A3%9E%E8%A1%8C%E6%89%8B%E5%86%8C/%E9%A3%9E%E8%A1%8C.pdf
description The requested resource (/Data/%E9%A3%9E%E8%A1%8C%E6%89%8B%E5%86%8C/%E9%A3%9E%E8%A1%8C.pdf) is not available.
--------------------------------------------------------------------------------
我在網上查過相關資料,幾乎所有的WEB容器在其內部預設的字元編碼格式都是以ISO-8859-1為預設值的,同時,幾乎所有的瀏覽器在傳遞參數時都是預設以UTF-8的方式來傳遞參數的,我連結中文pdf檔案,IE是用UTF-8傳遞參數的,所以我又要把
Tomcat目錄conf目錄server.xml URIEncoding="gb2312"改為 URIEncoding="UTF-8"這樣中文連結問題便解決了!
可是這樣a.jsp?param=中文"傳遞參數,request.getParameter(param)又變成亂碼了,怎樣才能把這兩個問題同時給解決了!請高手指點,線上等!我的頁面已加過:
<%@ page contentType="text/html; charset=gb2312" errorPage="error.jsp"%>
<%@page pageEncoding="GB2312"%>
<%request.setCharacterEncoding("GB2312");%>這三句話了!
所有的與編碼有關的改用UTF-8,試試
<%@ page contentType="text/html; charset=utf-8" errorPage="error.jsp"%>
<%@page pageEncoding="utf-8"%>
<%request.setCharacterEncoding("utf-8");%>
是不是沒寫request.setCharacterEncoding("gb2312")啊,我以前遇到過這種問題
zxm_dgcstars大哥:
改為UTF-8後,出現了兩個問題:
1)我頁面重新整理後,點中文兩個字,a.jsp?param=中文"傳遞參數,另一個頁面request.getParameter(param);
後是�����ֲ������ֲ� (亂碼),可是當我再點中文兩個字後,另一個頁面就不是亂碼,為什麼第一次是亂碼,再次點擊後就不是亂碼了呢?
2)改為UTF-8後,我的頁面原來定義的CSS都發生了變化,比如中文兩個字原來下面沒有底線,改為UTF-8後,下面就有底線了,我的CSS就不起作用了!請問CSS和編碼有關嗎?怎樣調整呢?我的CSS定義如下:
body, table {
background-color: #CCFFFF;FONT-SIZE: 9pt; WORD-SPACING: 2pt; COLOR: #333333; FONT-FAMILY: "宋幻"; LETTER-SPACING: 0.5pt
}
A:link {
COLOR: #000000; FONT-STYLE: normal; TEXT-DECORATION: none
}
A:visited {
COLOR: #000000; FONT-STYLE: normal; TEXT-DECORATION: none
}
A:hover {
COLOR: #f77d08; FONT-STYLE: normal; TEXT-DECORATION: none
}
A:active {
COLOR: #0066cc; FONT-STYLE: normal; TEXT-DECORATION: none
}
.en {
FONT-SIZE: 12px; FONT-FAMILY: "Arial", "Helvetica", "sans-serif"
}
BODY {
SCROLLBAR-FACE-COLOR: #eeeeee; FONT-SIZE: 9pt; SCROLLBAR-HIGHLIGHT-COLOR: #b5b5b5; SCROLLBAR-SHADOW-COLOR: #b5b5b5; COLOR: #000000; SCROLLBAR-3DLIGHT-COLOR: #eeeeee; LINE-HEIGHT: 12pt; SCROLLBAR-ARROW-COLOR: #b5b5b5; FONT-FAMILY: "宋體"; SCROLLBAR-DARKSHADOW-COLOR: #eeeeee
}
.3dfont {
FILTER: glow(color=ffffff,strength=0) shadow(color=aaaaaa,direction:75); POSITION: relative; WIDTH: 100%
jiaozi226() :
我每個頁面都寫了:
<%@ page contentType="text/html; charset=gb2312" errorPage="error.jsp"%>
<%@page pageEncoding="GB2312"%>
<%request.setCharacterEncoding("GB2312");%>這三句話了!
我一個是傳遞中文參數,一個是開啟中文檔案名稱的連結,比如頁面點擊“學習.pdf”或“學習.word”就把pdf或word文檔給開啟了,我點擊英文名的pdf或word是可以開啟的!比如love.pdf或love.word,矛盾中,每次只能解決一個問題,兩個問題不能同時解決!
你用的eclipse?可以試試直接吧模板檔案改成中文,以後建立的時候應該就自動識別中文了。
直接把模板檔案改成中文?具體操作說下,好嗎?我用的eclipse3.2,myeclipse5.0
在視窗-喜好設定,裡面選擇wdb和xml,下面有個jsp,裡面可以選擇編碼為中文
在裡設定兩個屬性 charset = "gb2312" encoding = "gb2312"
cucaracha(巴蒂斯圖塔) :
你說的啥意思?
我每個頁面都寫了:
<%@ page contentType="text/html; charset=gb2312" errorPage="error.jsp"%>
<%@page pageEncoding="GB2312"%>
<%request.setCharacterEncoding("GB2312");%>
你讓我裡設定兩個屬性 charset = "gb2312" encoding = "gb2312"??
難道寫成:
<%@ page contentType="text/html; charset=gb2312"
encoding = "gb2312" errorPage="error.jsp"%>
是這個意思嗎?
believebase() :
喜好設定裡我根本找不到wdb和xml,在哪裡啊?
在你的中文參數傳之前先用下面代碼進行編碼:
String param1=URLEncoder.encode("你的中文參數","UTF-8")
然後在a.jsp?param=param1(前面轉碼後的參數);
在取參數的時候用下面代碼取得參數:
String param1=URLDecoder.decode("傳遞過來的編碼後的參數","UTF-8");//在變成中文!
Sunny319(努力學習java中.) :
用這句話要導什麼包嗎?報URLEncoder的錯!前面要加什麼東西吧!
String param1=URLEncoder.encode("你的中文參數","UTF-8")//我把這句話寫我頁面上,就報
URLEncoder cannot be resolved.
我頁面上的相關代碼:
String param1=URLEncoder.encode("filenames[n]","UTF-8");
我js:
onClick="notinpropertiesturnit('<%=param1%>',Content<%=n%>,Img<%=n%>,tag<%=n%>);"
function notinpropertiesturnit(manualName,ss,ii,bb){
self.parent.frames["mainFrame"].location.href="notinpropertiestr.jsp?manualName="+manualName;
}
我另一個頁面該怎樣寫啊?我原來取參數的頁面代碼:
String a=request.getParameter("manualName");
改成這樣嗎?
String a=URLDecoder.decode("manualName","UTF-8");//URLDecoder cannot be cannot be resolved ,也要加什麼東西吧!
頁面加這個
<%request.setCharacterEncoding("utf-8");%>
XML的不變
import java.net.URLEncoder;
import java.net.URLDecoder;
改成:
String a=request.getParameter("manualName");
a=URLDecoder.decode(a,"UTF-8");
你的中文參數編碼後,在地址欄的串連時應該是:a.jsp?param=%AB%BC這種格式!
zhangfan790913(笑月) :
XML不變是說server.xml檔案不變嗎?我原來server.xml加 URIEncoding="UTF-8"這句話的,你不讓加這句話了?我頁面上寫這兩句話對吧:
<%@page contentType="text/html; charset=gb2312"%>
<%request.setCharacterEncoding("utf-8");%>
我server.xml檔案沒加那句話了,而且頁面也用<%request.setCharacterEncoding("utf-8");%>
了,現在兩個問題一個沒解決!我原來還解決一個問題的!現在連結開啟中文是亂碼,傳中文參數也是亂碼,你的方法根本不行!
我要連結打我頁面上的文檔.doc 檔案,滑鼠打擊後:亂碼!!
HTTP Status 404 - /Data/EEE/%E6%96%87%E6%A1%A3.doc
--------------------------------------------------------------------------------
type Status report
message /Data/EEE/%E6%96%87%E6%A1%A3.doc
description The requested resource (/Data/EEE/%E6%96%87%E6%A1%A3.doc) is not available.
傳中文參數也是亂碼:
???????á ?é??ê??á
煩惱啊!到底怎麼解決啊!
%E6%96%87%E6%A1%A3.doc這個不是亂碼啊.就是中文用一種編碼格式編碼而已!你可以把它還原成中文!
Sunny319(努力學習java中.) :
你說你方法前,我server.xml的這句話也是要加的吧:
server.xml中加URIEncoding="UTF-8"//只加這句話可以解決頁面連結開啟中文檔案名稱問題:
比如我要連結打我頁面上的文檔.doc 檔案,加了這句話就可以開啟了這個word文檔了,但是頁面傳中文,另一個頁面接收此中文,另一個頁面上接收的是亂碼??????? ???????
我按你的方法還是亂碼啊!我地址欄沒顯示的!因為我是多視窗的,一個大的jsp分了三個小的jsp,我傳參數是從一個小的jsp傳到另一個小的jsp。
你有msn嗎?我把檔案發給你,我msn:
mengnansoftware@hotmail.com
Sunny319(努力學習java中.) :
%E6%96%87%E6%A1%A3.doc是一種編碼格式,那怎樣還原成中文???說下具體辦法!我都急死了!server.xml要改嗎?
jsp1.jsp?name="樓主" 提交到jsp2.jsp
jsp2中
String str = request.getParemeter("name");
String param= new String(str.getBytes("ISO-8859-1"), "GBK");
dr_lou() :
請問server.xml還要改嗎?
我把server.xml加了URIEncoding="UTF-8"這句話後,用你的方法還是亂碼!
String a=request.getParameter("manualName");
String param= new String(a.getBytes("ISO-8859-1"), "gb2312");
out.println(param);
頁面上還是亂碼!???????
dr_lou() :
我已經說了好幾遍了,矛盾中,你這個方法只能解決傳中文參數的問題,連結開啟中文名字的檔案不行,我要連結打我頁面上的文檔.doc 檔案,滑鼠打擊後:報錯如下:
HTTP Status 404 - /Data/EEE/%E6%96%87%E6%A1%A3.doc
--------------------------------------------------------------------------------
type Status report
message /Data/EEE/%E6%96%87%E6%A1%A3.doc
description The requested resource (/Data/EEE/%E6%96%87%E6%A1%A3.doc) is not available.
server.xml加了URIEncoding="UTF-8"後可以解決開啟中文檔案連結的問題,但是不能解決傳中文參數的問題,不加URIEncoding="UTF-8",加
String a=request.getParameter("manualName");
String param= new String(a.getBytes("ISO-8859-1"), "gb2312");
out.println(param);
可以解決傳中文參數的問題,但是不能解決開啟中文檔案連結的問題!
要想使這兩個問題同時給解決了該如何辦??求大家了!!鬱悶啊!
在Servlet裡接值
String book_pdf_name = new String(request.getParameter("book_pdf").getBytes("ISO-8859-1"),"gb2312");
在Jsp頁面裡接值
把getBytes("ISO-8859-1")改成getBytes()就行了。
ran_ran():
你說的是啥意思啊?我寫的是jsp+javabean的程式啊!你說的是解決我那兩個矛盾的問題中的哪一個啊?我的要求是傳中文參數和頁面開啟中文檔案連結這兩個問題都可以解決,不是解決其中一個啊!那麼多人說的方法,都只解決了其中一個問題,另一個問題根本沒解決!
那是我沒看清``
我最近作了一個新聞發布系統
就涉及 葉面之間傳遞中文 和 頁面開啟中文檔案連結
我QQ 397692925 我把它發給你
中文串連那個 好像只在<%@ page 裡加了東西 沒修改xml
dr_lou() :
發我郵箱裡好嗎?mengnansoftware@hotmail.com,我現在在msn上呢!我白天上不了qq,晚上才能上的,我qq:565355525
還有zxm_dgcstars() 的方法,第一次點擊中文檔案連結,傳過去的是亂碼,我第二次點擊此中文檔案連結傳過去就不是亂碼了,也不知道怎麼回事,而且我原來定義的css中連結下面原來沒橫線的,用了zxm_dgcstars() 的方法的方法下面就有橫線了!搞不懂!他人也不回我文章了!
他的方法是改xml,然後頁面中加:
<%@ page contentType="text/html; charset=utf-8" errorPage="error.jsp"%>
<%@page pageEncoding="utf-8"%>
<%request.setCharacterEncoding("utf-8");%>
關注中
別用gbk,所有的地方最好都用utf-8或iso8859-1
剛測試完
jsp1.jsp
<%@ page contentType="text/html; charset=GBK" %>
<head>
</head>
<body bgcolor="#ffffff">
<form action="jsp2.jsp?name=徐" method="POST">
<input type="file" name="filename" />
<input type="submit" />
</form>
</body>
jsp2.jsp
<%@ page contentType="text/html; charset=GBK" %>
<head>
</head>
<%
request.setCharacterEncoding("GBK");
String str1 = request.getParameter("name");
String str2 = request.getParameter("filename");
String gbk1 = new String(str1.getBytes("ISO-8859-1"),"GBK");
%>
<body bgcolor="#ffffff">
" target="_blank"><%=gbk1 %>
</body>
可以開啟有中文的超串連
dr_lou() :
你說的和我的需求不符合!我是在一個頁面做連結,另一個頁面接參數,你的是在同一個頁面又做連結又接參數!
到底有沒有人知道怎麼解決啊!鬱悶啊!
Sunny319(努力學習java中.) :
%E6%96%87%E6%A1%A3.doc是一種編碼格式,那怎樣還原成中文???說下具體辦法!等你回帖呢!
我的server設定檔如下
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="UTF-8" useBodyEncodingForURI="true"/>
我的web項目名為StrutsTest
寫了一個測試action ,並且在strutsTest下放入一個檔案 叫"中文.txt"
System.out.println("test");
String tst=req.getParameter("chinese");
System.out.println(tst);
try {
System.out.println(new String(tst.getBytes("ISO-8859-1"),"GB2312"));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return mapping.findForward("page");
測試1
http://127.0.0.1:8080/StrutsTest/search.do?chinese=中文1111111111
console列印如下
test
????1111111111
中文1111111111
測試2
http://127.0.0.1:8080/StrutsTest/中文.txt
顯示內容正常
關鍵在於useBodyEncodingForURI="true"
各位上面的兄弟不好意思了 獨接50分 承讓承讓
syoumei(好的老師讓你上天堂不好的老師讓你住套房!) :
我加這兩條URIEncoding="UTF-8" useBodyEncodingForURI="true" 還是只能解決連結開啟中文檔案的問題啊,那個傳中文的還是亂碼啊!!useBodyEncodingForURI="true"這句話是啥意思?
你的console列印如下
test
????1111111111
中文1111111111
這裡面不是也有????嗎
我msn:mengnansoftware@hotmail.com
qq:565355525
System.out.println("test");//test
String tst=req.getParameter("chinese");//????111111
System.out.println(new String(tst.getBytes("ISO-8859-1"),"GB2312"));//中文1111111111
<%@ page contentType="text/html;charset=gb2312"%>
<%=new String(request.getParameter("chinese").getBytes("ISO-8859-1"),"GB2312")%>
直接用在jsp頁面也沒問題啊
我的頁面還是亂碼啊,你有msn或qq嗎?我加你,我把我jsp頁面代碼發給你!
出亂碼頁加上<%request.setCharacterEncoding("GB2312");%>
其實不用管什麼亂碼的,只用一個GB312就可以了...至於出現亂碼就與你的JSP代碼出錯了吧...
icannotfly() :
你根本不看我文章的內容,你自己好好看看吧!你那句話早加了!
up
又是亂碼問題啊,沒猜錯的話,你是在做一個類似新聞發布的系統。
那些串連是從資料庫中取出來的,然後在第一個頁面顯示正常,在第二個也面就顯示亂碼,包括傳到第二個頁面的地址欄都是正常的,呵呵,我以前就是出現這種問題。
CSDN中並不是你想像的那樣,高手如雲!一般人也都是互相COPY,給的答案也是解決不了什麼的。
還是自己看下書,我記得我以前散了100分,很多人回答,最終也沒有解決這個問題。
還是自己解決了,變換一種方法。
樓上的有一位說的可能對,利用URLEncoder和URLDecoder,不過我當時用的時候也是說找不到類,實際上已經匯入了。
另:這個方法是我從網上查的,專門針對參數有中文傳遞的,而且還要在你說的那裡加上URIEncoding="utf8"
我看書,查資料弄了很長時間。
建議:不管是資料庫還是頁面,統一用UTF8編碼。