導航:首頁 > 編程語言 > jsp中文轉碼再發

jsp中文轉碼再發

發布時間:2024-10-27 05:59:30

❶ 在jsp中,如何在表單中輸入漢字,另一個頁面接受到,然後輸出來,應該如何設置,

傳輸方式選「post」,在另一個頁面的java代碼中設置編碼如下:
request.setCharacterEncoding("utf-8");

response.setCharacterEncoding("utf-8");

這是比較簡單的設置,如果是get傳輸方式還要另寫。。。。

❷ jsp插入資料庫亂碼 中文的參數怎麼處理

1、JSP頁面亂碼
這種亂碼的原因是應為沒有在頁面里指定使用的字元集編碼,解決方法:只要在頁面開始地方用下面代碼指定字元集編碼即可,
2、資料庫亂碼
這種亂碼會使你插入資料庫的中文變成亂碼,或者讀出顯示時也是亂碼,解決方法如下: 在資料庫連接字元串中加入編碼字元集 String
Url="jdbc:mysql://localhost/digitgulf?user=root&password=root&useUnicode=true&characterEncoding=GB2312";
並在頁面中使用如下代碼:
response.setContentType("text/html;charset=gb2312"); request.setCharacterEncoding("gb2312");
3、中文作為參數傳遞亂碼
當我們把一段中文字元作為參數傳遞個另一頁面時,也會出現亂碼情況,解決方法如下: 在參數傳遞時對參數編碼,比如
RearshRes.jsp?keywords=" + java.net.URLEncoder.encode(keywords) 然後在接收參數頁面使用如下語句接收
keywords=new String(request.getParameter("keywords").getBytes("8859_1"));
response.sendRedirect("?gh=0001&xm=" + java.net.URLEncoder.encode("忘憂草")); String s=new String(request.getParameter("xm").getBytes("ISO8859_1"),"gb2312"); out.println(s);
4、JSP頁面亂碼加這句?
<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="err.jsp" %>
5、在form中用get方法傳參亂碼解決方法 如: 1、 login.jsp

<%@ page language="java" contentType="text/html;charset=GBK"%> <html> <head>
<title>get傳參亂碼問題</title> </head> <body>
<form name="form1" action="login_do.jsp" method="GET"> <input type="text" name="username"/><br>
<input type="password" name="password"/><input type="submit" value="提交"/> </form> </body> </html> ============ 2、login_do.jsp
<%@ page language="java" contentType="text/html;charset=GBK"%> <%
String temp=request.getParameter("username"); if(temp!=null){ temp=new String(temp.getBytes("8859_1"),"GBK"); }
out.println(temp); %>

❸ jspsmartupload上傳的文件名是亂碼怎麼辦

方法一:(之前在頁面直接跳轉上傳時能夠解決問題,非同步提交上傳圖片就不能正常了)

1.解決中文亂碼:

【1】:首先上傳頁面和接收頁面都必須制定編碼格式為GBK;

<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>

【2】:在上傳頁面要response.setCharacterEncoding("GBK");

【3】:在接收頁面要request.setCharacterEncoding("GBK");

【4】:注意上傳時表單要指定編碼為:enctype="multipart/form-data"

【5】:注意上傳時表單要指定方法為:method="post"

方法二:(非同步提交表單能正常解決)

【1】上傳頁面:(對參數做一次encodeURI)js

//對表單中的中文區域值得獲取並進行轉碼

var name = parent.window.$("#tabs_name").val();

var direction = parent.window.$("#tabs_direction").val();

parent.window.$("#tabs_name").val( encodeURI(name));

parent.window.$("#tabs_direction").val( encodeURI(direction));

parent.window.$('#subject_modify').submit(); //提交表單

【2】接收參數頁面(對參數做一次URLDecoder)

String name = smart.getRequest().getParameter("name");

name = URLDecoder.decode(name,"utf-8");

❹ JSP頁面提交後,提交的post中文是正常的,但是到達伺服器上,中文就亂碼了。頁面已經全部改為UTF-8

有以下幾種方法可以解決
1.在jsp 的java代碼執行之前寫入在 <% response.setContentType("text/html;charset=UTF-8")%> 一定要是之前,因為設了這個下面代碼才開始生效。可以寫在jsp開頭。
2.在在Servlet中service方法開始部分寫入 response.setContentType("text/html;charset=UTF-8")
3.在過濾器中寫入在Servlet中 response.setContentType("text/html;charset=UTF-8") 一般都寫在過濾器中,可以減少代碼重復量
4.對於提交已經編碼的數據需要先解碼再編碼,也就是樓主的方法
new String(str.getBytes("ISO8859-1"),"UTF-8") 這種方法可以解決提交時候的問題,
new String(str.getBytes("UTF-8"),"ISO8859-1") 同樣的道理解決已經編碼的數據要顯示到頁面的時候就要反著寫
還有就是項目中最好使用統一的編碼包括:文件保存的時候使用的編碼,jsp文件翻譯時使用的編碼,伺服器響應編碼,和提交編碼,還有就是資料庫的編碼。
eclipse下:jsp和class文件保存時使用編碼在文件右鍵的property選項中能找到,
jsp頁面編碼有兩個<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
pageEncoding是設的是tomcat將jsp文件翻譯成servlet程序的時候執行的翻譯編碼,而charset才是伺服器響應編碼 也就是servlet中的response.setCharacterEncoding 一般都設置成UTF-8;
提交數據的時候也需要你那樣轉碼,不過轉碼工作卻實是寫在過濾器里,可以寫代碼的減少麻煩
提交參數時候要設置request的編碼,也就是你遇到的問題,按照我前四步的說明做就可以了

❺ 做一個web登錄界面,login.jsp裡面進行登錄,loginservlet進行登錄處理,然後轉回login.jsp進行顯示

首先,你jsp跳轉到Servlet是用哪種方法傳值的,是form表單提交,還是用連接(&loginok=true)這樣的提交。無論怎樣提交。boolean loginok = req.getParameter(loginok);也不對啊。req是什麼類型的啊?你的loginok是放在session裡面的。所以先創建session對象,然後在用session的內置方法獲取loginok的值。HttpSession session = request.getSession();然後在boolean loginok = session.getAttribute("loginok");
下面是我自己登陸用的Servlet希望可以幫到你:
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String userName = "";
String userPwd = "";
String flag = "";
flag = request.getParameter("flag");
if (flag == null) {
flag = "";
}
if (flag.equals("back")) {
HttpSession session = request.getSession();
session.invalidate();
flag = "";
response.sendRedirect("/MicroBlog/initServlet");
} else {
boolean bool = false;
action login = new action();
try {
RequestDispatcher rd = null;
request.setCharacterEncoding("UTF-8"); // 中文轉碼
response.setCharacterEncoding("UTF-8");

userName = request.getParameter("name"); // 獲得用戶登錄名
userPwd = request.getParameter("pwd"); // 獲得用戶密碼

bool = login.getLogin(userName, userPwd);
HttpSession session = request.getSession();
if (bool) { // 登陸成功
UserForm userForm = login.getUser();
ArrayList<String> guanList = login.getGuan(userForm.getId());
ArrayList<ExForm> expList = login.getExp();
session.setAttribute("exp", expList);
session.setAttribute("user", userForm);
session.setAttribute("guan", guanList);
rd = request.getRequestDispatcher("user.jsp");

} else {
rd = request.getRequestDispatcher("error.jsp");
}

rd.forward(request, response);

} catch (Exception e) {
e.printStackTrace();
}
}
}

❻ jsp亂碼問題有什麼徹底的解決方法

由於jdk中只規定了必須有一些unicode utf8
等編碼的實現,
好像對漢字編碼沒有什麼實現的硬性規定,
所以有時候就會出現亂碼問題。

資料庫訪問時的亂碼問題,可以資料庫連接中加上useunicode =true 以及用gbk 或gb2312編碼就可以了:
在建立資料庫時,將資料庫中的所有表的編碼方式都設置為gbk,原因是JSP中也使用了gbk編碼,這樣統一的結果是可以減少

很多不必要的編碼轉換問題。另外,在使用JDBC連接MySQL資料庫時,連接字元串寫成如下形式可以避免一些中文問題:

jdbc://mysql://hostname:port/DBname?user=username&
password=pwd&
useUnicode=True&
characterEncoding=gbk

如果是以數據源的方式連接資料庫,在配置文件中使用:
<parameter>
<name>url</name>
<value>
jdbc://mysql://hostname:port/DBname?&useUnicode=True&characterEncoding=gbk
</value>
</parameter>
但是,如果使用一個已經存在的資料庫,資料庫的編碼方式是ISO-8859-1,而Web應用中使用UTF-8,且資料庫中已經有很多

重要信息,因此不能通過更改資料庫的編碼方式來解決問題。這個時候,在往資料庫中寫資料庫時,一定要在JDBC連接字元串中加入

「useUnicode=True&characterEncoding=ISO-8859-1」,這樣可以順利的往資料庫中寫入正常的數據。但是,在將數據讀出資料庫時

,亂碼又會出現,這個時候就應該在數據取出時對其轉碼,可以將轉碼功能寫為一個函數,具體實現如下:
public String charConvert(String src){
String result=null;
if(src!=null){
try{

// 使用給定的 charset 將此 String 編碼到 byte 序列,並將結果存儲到新的 byte 數組->通過使用指定的 charset 解碼指定的

byte 數組,構造一個新的 String。
result=new String(src.getBytes("ISO-8859-1"),"gbk");
}catch(Exception e)
{
result=null;
}
}
return result;
} 於是,在從資料庫讀出數據過後調用charConvert(rs.getString("colName")),這樣就可以正常顯示資料庫中的中文數據了



JSP中輸出中文的亂碼問題
所謂在JSP輸出中文,即直接在JSP中輸出中文,或者給變數賦中文值再輸出等,這種情況下的亂碼問題往往是因為沒有給JSP頁面制

定顯示字元的編碼方式,解決問題如下:

·在JSP頁面頭部加上語句<%@ page contentType="text/html;charset=gbk"%>(在Servlet頁面中使用

httpServletResponse.setContentType("text/html;charset=gbk")),最好同時在JSP頁面的head部分加上<meta http-

equiv="Content-Type" content="text/html;charset=gbk">

·在每次要輸出中文的地方主動轉換編碼方式,比如要在頁面中輸入「中文」二字,就可以用以下方式:

<%
String str="中文";
byte[] tmpbyte=str.getBtyes("ISO-8859-1");
str=new String(tmpbyte);
out.print(str);
%>

獲取表單提交的數據時的中文亂碼問題

在沒有加任何其他處理之前,用request.getParameter(panamName)獲取表單提交中的數據,且表單數據中含有中文時,返回

的字元串會出現亂碼。出現這種問題的原因是Tomcat的J2EE實現對表單提交,即以POST方式提交的參數採用默認的ISO-8859-1來處理


比如,建立一個test.jsp,內容為:
<%@ page contentTyp="text/html;charset=gbk"%>
<%
String str=request.getParameter("chStr");
if(str==null) str="沒有輸入值";
%>
<html>
<head>
<title>中文Test</title>
<meta http-equiv="Content-Type" content="text/html;charset=gbk">
<meta http-equiv=param content=no-cache>
</head>
<body>你輸入的內容為:<%=str%><br>
<form action="test.jsp" method="post">
請輸入中文:<input type="text" name="chStr">
<input type="submit" value="確定">
</form>
</body>
</html>

運行過後,在輸入框中輸入漢字「中文」,提交過後再顯示出來後就變成了一堆亂碼。解決此問題的辦法有兩個。一是不修

改其他設置,只是在將表單中的中文數據取出來過後再轉換編碼,方法如語句String str=request.getParameter("chStr");String

str=new String(sre.getByte("ISO-8859-1"),"gbk"),但這種方法只是從一個局部來考慮問題,如果這樣的地方太多,就不得不將這

條語句重復寫很多次,在比較大的項目中,這是一種不太可行的方案。另一個方法就是讓對所有頁面的請求都通過一個Filter,將處

理字元集設置為gbk。具體的做法如下(在Tomcat的webapps/servlet-examples目錄有一個完整的例子,也可以參考其中web.xml和

SetCharacter EncodingFilter的配置):

首先將%TOMCAT%/webapps/servlets-examples/Web-INF/classes/filters/目錄下的文件SetCharacterEncodingFilter.class

拷貝到自己應用的/Web-INF/classes/com/util/filter目錄下;然後再在web.xml文件的<web-app>後面加上如下配置代碼:
<filter>
<filter-name>Set Character Encoding</filter-name>
<filter-class>com.ccut.struts.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>gbk</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Set Character Encoding</filter-name>
<url-pattern>/*<url-pattern>
</filter-mapping>

URL中的中文問題

對於直接通過在URL中傳遞中文參數,如「http://localhost/a.jsp?str=中文」這樣的get請求,在服務端用

request.getParameter("name")時返回的往往是亂碼。按以上的做法設置Filter沒有用,用request.setCharacterEncoding("gbk")

的方式,仍然不管用。
例如,建立test2.jsp文件,內容為:

<%@ page contentTyp="text/html;charset=gbk"%>
<%
String str=request.getParameter("chStr");
if(str==null) str="沒有輸入值";
%>
<html>
<head>
<title>中文Test</title>
<meta http-equiv="Content-Type" content="text/html;charset=gbk">
<meta http-equiv=param content=no-cache>
</head>
<body>你輸入的內容為:<%=str%><br>
<form action="test.jsp" method="post">
<a href="test2.jsp?chStr=中文">點擊這里提交中文參數</a>
</form>
</body>
</html>

運行後,可見通過URL傳遞的中文參數取出來過後變成了亂碼,造成這種結果的原因是Tomcat中以get方式提交的請求對

query-string處理時採用了和post方法不一樣的處理方式。
解決這個問題的方法是打開Tomcat安裝目錄下的/conf/server.xml文件,找到Connector塊,往其中添加URIEncoding="gbk"

,添加過後完整的Connector塊代碼如下:
<Connector port="8080"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
debug="0" connectionTimeout="20000"
disableUploadTimeout="true"
URIEncoding="gbk"
/>

在Struts中證實可以解決URI傳遞亂碼問題.
可以這樣做
1.設定Tomcat的URI編碼為"UTF-8":修改%tomcat%\conf\server.xml中的<Connector>在中間加入URIEncoding="UTF-8";
2.先在頁面上encodeURI(url);
3.後台代碼中直接取出來的中文參數就已經OK了.
4. 試一試request.setCharacterEncoding("GBK");
不過這種方法用在servlet中行不通,在servlet中就必須對URI進行處理,Tomcat中有沒有加入URIEncoding都沒有差別.

閱讀全文

與jsp中文轉碼再發相關的資料

熱點內容
ps入門必備文件 瀏覽:348
以前的相親網站怎麼沒有了 瀏覽:15
蘋果6耳機聽歌有滋滋聲 瀏覽:768
怎麼徹底刪除linux文件 瀏覽:379
編程中字體的顏色是什麼意思 瀏覽:534
網站關鍵詞多少個字元 瀏覽:917
匯川am系列用什麼編程 瀏覽:41
筆記本win10我的電腦在哪裡打開攝像頭 瀏覽:827
醫院單位基本工資去哪個app查詢 瀏覽:18
css源碼應該用什麼文件 瀏覽:915
編程ts是什麼意思呢 瀏覽:509
c盤cad佔用空間的文件 瀏覽:89
不銹鋼大小頭模具如何編程 瀏覽:972
什麼格式的配置文件比較主流 瀏覽:984
增加目錄word 瀏覽:5
提取不相鄰兩列數據如何做圖表 瀏覽:45
r9s支持的網路制式 瀏覽:633
什麼是提交事務的編程 瀏覽:237
win10打字卡住 瀏覽:774
linux普通用戶關機 瀏覽:114

友情鏈接