當前位置:首頁 » 網頁前端 » webxml解決亂碼
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

webxml解決亂碼

發布時間: 2022-10-08 18:58:10

❶ javaweb怎麼處理中文亂碼問題

中文亂碼問題真的是一個很棘手的問題,特別是從前台傳到後台之後,都不知道問題出在哪裡了。現在分享解決javaWEB中前後台中文亂碼問題的3種方法。
方法一:
tomcat的自帶編碼是ISO-8859-1的格式,是不兼容中文的編碼的。所以我們從後台接收的時候要注意。
採用相同的格式去接收(ISO-8859-1),然後用能解析的編碼(utf-8)去轉換。這樣我們就能得到能兼容中文的格式了。這樣處理之後發往前台。注意:發往前台的時候也需要設置一下
resp.setContentType("text/html;charset=utf-8");//設置頁面的字元編碼,解決界面顯示中文亂碼的問題
protected void service(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
//因為tomcat自帶編碼是ISO-8859-1格式

//解決亂碼方法之一
<span style="white-space:pre"> </span>String name=req.getParameter("username");
<span style="white-space:pre"> </span>String pwd=req.getParameter("pwd");
<span style="white-space:pre"> </span>byte[] b=name.getBytes("ISO-8859-1");//用tomcat的格式(iso-8859-1)方式去讀。
<span style="white-space:pre"> </span>String str=new String(b,"utf-8");//採用utf-8去接string
<span style="white-space:pre"> </span>resp.setContentType("text/html;charset=utf-8");//設置頁面的字元編碼<span style="white-space:pre"> </span>

<span style="white-space:pre"> </span>PrintWriter pw =resp.getWriter();
<span style="white-space:pre"> </span>String str1="<html><body><font size='5px' color='red'>username:"+name+"pwd:"+pwd+"</font></body></html>";
<span style="white-space:pre"> </span>pw.print(str1);
PrintWriter pw =resp.getWriter();
String str1="<html><body><font size='5px' color='red'>username:"+name+"pwd:"+pwd+"</font></body></html>";
pw.print(str1);

方法二:
由於方法一比較繁瑣,採用用了簡單的設置。只需要簡單的一句就可以搞定
req.setCharacterEncoding("utf-8");//必須寫在第一位,因為採用這種方式去讀取數據,否則數據會出錯。
這樣就不用像之前的那樣繁瑣的設置了

protected void service(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
//因為tomcat自帶編碼是ISO-8859-1格式

//解決亂碼二《法一比較繁瑣》
req.setCharacterEncoding("utf-8");//必須寫在第一位,因為採用這種方式去讀取數據,否

則數據會出錯。
//設置這樣方式去讀。這樣中文就能夠讀取出來了,但是需要注意。表單的發送方式必須是<span style="color:#ff0000;"> method='post'</span>
resp.setContentType("text/html;charset=utf-8");//設置傳過去的頁面顯示的編碼
String name=req.getParameter("username");
String pwd=req.getParameter("pwd");
PrintWriter pw =resp.getWriter();
String str1="<html><body><font size='5px' color='red'>username:"+name+"pwd:"+pwd+"</font></body></html>";
pw.print(str1);

方法三:
這是在法二的基礎上修改的。雖然我們能修改編碼格式去讀,但是考慮到用戶肯定不會修改,所以我們需要採用比較通用的辦法,讓用戶修改配置文件。也就是web.xml文件
需要修改web.xml裡面的內容,就是說,字元編碼從xml接收過來。需要在xml文件中配置參數。
代碼如下:

<servlet>
<servlet-name>Encodeing</servlet-name>
<servlet-class>cn.hncu.com.encode.Encodeing</servlet-class>
<init-param>
<param-name>charset</param-name>
<param-value>utf-8</param-value>//這裡面的內容可供用戶自己填寫(必須是編碼格式)
</init-param>
</servlet>

我們知道前台和後台進行交換必須經過web.xml配置
我們需要獲取web.xml的設置的參數

public void init(ServletConfig config) throws ServletException {
charset=config.getInitParameter("charset");//獲得初始化參數。當然charset需要設置為全局變數。後面的service函數需要設置req.setCharacterEncoding(charset);
}

req.setCharacterEncoding(charset);
resp.setContentType("text/html;charset=utf-8");
String name=req.getParameter("username");
String pwd=req.getParameter("pwd");

PrintWriter pw =resp.getWriter();
String str1="<html><body><font size='5px' color='red'>username:"+name+"pwd:"+pwd+"</font></body></html>";
pw.print(str1);

❷ 關於jsp頁面的亂碼問題,在web.xml文件中配置了過濾器

首先,你要把你整個項目的編碼格式設置成utf-8,還有就是默認的編碼格式也要是utf-8,
如果還不行的話,可能是你瀏覽器的編碼格式造成的.修改下試試.祝你好運!

❸ eclipse導入web工程xml文件亂碼

選中XML文件,右鍵,屬性,編碼那個選中other,然後發現沒有GB2312沒關系,你選擇那個輸入框,直接把它默認的刪了,自己輸入GB2312

❹ 如何解決XML文件亂碼

瀏覽器在打開你的XML文件時要查看你的XML文件中的encoding設置的是什麼編碼方式,然後就以這個編碼方式打開你的XML文件.所以你的XML文件的保存的編碼方式一定要與你的XML文件中設置的encoding的編碼方式一致,否則就會出現亂碼.例如你保存XML文件時使用的是unicode編碼,而XML文件中的encoding設置的卻是GBK編碼,這樣瀏覽器在解析你的XML文件時就會使用GBK的解碼方式去解析你原本使用unicode保存的XML文件,這樣就亂碼了,解析不出來了.所以你的XML文件的保存的編碼方式一定要與你的XML文件中設置的encoding的編碼方式一致.

❺ java中怎麼在web.xml中處理post請求亂碼問題

處理的辦法太多了,覺得你的出發點錯了,你的先判斷出出現亂碼的原因是啥

出現亂碼的地方和原因有很多種,最重要的一種就是字元編碼格式不統一導致的,然後你就得看哪裡轉換的時候不一致,然後再調整。。。

❻ xml文件打開後亂碼,怎麼解決。

xml文件打開後亂碼是內容的編碼格式錯誤,選擇以UTF-8格式編碼即可。

工具/材料:以Notepad++、xml文件為例。

1、首先在桌面上,選中「xml文件」圖標。

❼ web頁面查詢後中文關鍵字亂碼,如何解決

這可能是由於你的web項目所在系統的字元編碼、tomcat的字元編碼、開發項目時myeclipse的字元編碼以及建立資料庫時的編碼不一致造成的,點擊windows,Preference,點擊左側General,workspace。設置編碼為UFT8  別忘了在web.xml中配置這個filter哦

❽ web.xml的配置字元集解決get亂碼嗎

第一步:在tomcat 的server.xml文件中設置web伺服器埠配製中加下面兩句: useBodyEncodingForURI="true" URIEncoding="UTF-8" 第二步:JSP頁面編碼用UTF-8(也可以用「gb2312",第一步與解碼要一至)傳值時編碼一下: 以傳遞的參數為strPar為例...

❾ eclipse導入web工程xml文件亂碼

可能你創建的web項目的版本是3.0及以上的,從這個版本開始web.xml的作用可以通過註解來實現,所以默認就不會生成web.xml,如果你想生成web.xml的話,在創建項目的時候需要一直下一步下一步,並在最後一個頁面中把生成web.xml的選項勾選上才會創建

❿ 昆明Java培訓:如何解決網頁傳值過程中文亂碼問題

解決中文亂碼問題網頁傳值主要有兩種情況:1、使用form表單傳值使用form表單傳值主要有兩種方式:get和post(即:method="get/post",默認是get方式)1)解決使用post方式傳遞中文的亂碼問題:方法一:<formaction="login-handler.jsp"method="post"></form>在接收請求參數之前設置請求編碼即可,request.setCharacterEncoding("編碼");示例:<%request.setCharacterEncoding("UTF-8");Stringname=request.getParameter("name");Stringpwd=request.getParameter("pwd");%>方法二:可以寫一個Filter過濾該項目下的所有請求編碼web.xml文件<filter><filter-name>charsetEncoding</filter-name><filter-class>com.lym.filter.CharsetEncodingFilter</filter-class><init-param><param-name>code</param-name><param-value>UTF-8</param-value></init-param></filter><filter-mapping><filter-name>charsetEncoding</filter-name><url-pattern>/*</url-pattern></filter-mapping>CharsetEncodingFilter.java文件{privatestaticStringCODE="UTF-8";//默認編碼publicvoiddestroy(){}publicvoiddoFilter(ServletRequestarg0,ServletResponsearg1,FilterChainarg2)throwsIOException,ServletException{HttpServletRequestreq=(HttpServletRequest)arg0;HttpServletResponseresp=(HttpServletResponse)arg1;req.setCharacterEncoding(CODE);resp.setCharacterEncoding(CODE);arg2.doFilter(arg0,arg1);}publicvoidinit(FilterConfigarg0)throwsServletException{Stringcode=arg0.getInitParameter("code");if(!"".equals(code)&&code!=null){CODE=code;}}}2)解決使用get方式傳遞中文的亂碼問題:(兩種方法)<formaction="login-handler.jsp"method="get"></form>方法一:對接受到的請求參數進行轉碼,使用Stringname=newString(name.getBytes("默認編碼"),"轉換後的編碼");<%Stringname=request.getParameter("name");name=newString(name.getBytes("ISO-8859-1"),"UTF-8");//將接收到的name參數的編碼轉換為UTF-8編碼%>方法二:客戶端用戶提交數據之前,使用JS把用戶要提交的中文值進行編碼,然後再伺服器端對接收到的值進行解碼即可。
客戶端編碼:<script>functionlogin(){varloginForm=document.forms["loginForm"];loginForm.name.value=encodeURI(loginForm.name.value);//對中文字元串進行編碼returntrue;}</script><formaction="login-handler.jsp"name="loginForm"method="get"></form>服務端解碼:<%Stringname=request.getParameter("name");name=URLDecoder.decode(name,"UTF-8");%>注意:使用encodeURI對字元串進行一次編碼,再提交表單時又對字元串進行了一次的編碼,實際進行了兩次編碼。
在使用URLDecoder.decode()進行解碼時,實際上是對字元串進行兩次解碼。
2、使用<ahref=""></a>超鏈接的方式傳值使用JS對a標簽的href屬性值進行編碼,在對a標簽的href屬性值編碼時,要兩次編碼才能在服務端使用URLDecoder.decode()進行解碼。
客戶端編碼:<script>functiona(){vardoc=document.getElementById("aa");doc.href="a-handler.jsp?info="+encodeURI(encodeURI("你好"));}</script><ahref=""id="aa">使用超鏈接傳送中文參數</a>服務端解碼:<%Stringuser=request.getParameter("info");user=URLDecoder.decode(user,"UTF-8");out.println(user);%>