溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

html中post亂碼的解決方法

發(fā)布時間:2021-05-27 11:29:00 來源:億速云 閱讀:234 作者:小新 欄目:web開發(fā)

這篇文章主要介紹html中post亂碼的解決方法,文中介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們一定要看完!

html post亂碼的解決辦法:首先打開相應(yīng)的代碼文件;然后將post傳遞過來的ISO編碼內(nèi)容,改成UTF-8格式的內(nèi)容即可。

本文操作環(huán)境:Windows7系統(tǒng)、HTML5版,DELL G3電腦

HTML使用post方式提交中文內(nèi)容出現(xiàn)亂碼的錯誤解決方式

今天在做一個例子的時候,使用post方式提交表單,如果有中文的話,在另一個頁面顯示出來的時候,總是會出現(xiàn)亂碼;

但是將提交方式改為get的時候,就不會出現(xiàn)這種錯誤。

詳細(xì)錯誤見下面圖片和代碼。

HTML代碼:

 1 <!DOCTYPE html>
 2 <html>
 3 <head>
 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 5 <title>測試Cookie的設(shè)置和獲取</title>
 6 </head>
 7 <body>
 8     <form action="/TestTomcat/SetCookie" method="post">
 9         站點名:<input type="text" name="name"><br>
10         站點URL:<input type="text" name="url"><br>
11         <input type="submit" value="提交" />
12     </form>
13 </body>
14 </html>

Servlet代碼,截取一部分:

 1 response.setContentType("text/html;charset=utf-8");
 2         
 3         PrintWriter out=response.getWriter();
 4         
 5         String title="設(shè)置Cookie實例";
 6         String docType="<! DOCTYPE html>\n";
 7         out.println(docType+
 8                 "<html>\n"+
 9                 "<head><title>"+title+"</title></head>"+
10                 "<body bgcolor=\"#f0f0f0\">\n"+
11                 "<h2 align=\"center\">"+title+"</h2>\n"+
12                 "<ul>\n" +
13                 "  <li><b>站點名:</b>"
14                 + request.getParameter("name")  + "\n</li>" +
15                 "  <li><b>站點 URL:</b>"
16                 + request.getParameter("url") + "\n</li>" +
17                 "</ul>\n" +
18                 "</body></html>");

出現(xiàn)的錯誤:

html中post亂碼的解決方法

一開始我以為時代碼塊放置的位置不對,將上面代碼放在了doPost里面試了一下,還是出現(xiàn)這種錯誤。

那么如何用post方式傳遞中文呢?

通過查找資料,

post方式提交
對于這種情況,response.setCharacterEncoding有影響,當(dāng)沒有對response.setCharacterEncoding設(shè)置的時候值為null,則默認(rèn)采用iso-8859-1來進(jìn)行重新編碼(解碼)。
瀏覽器根據(jù)自己頁面的編碼格式作為起始編碼格式,把字符進(jìn)行編碼成byte進(jìn)行傳輸,到了tomcat,tomcat不進(jìn)行干涉其中的重新編碼(解碼)格式。如果response.getCharacterEncoding為null,那么默認(rèn)采用iso-8859-1進(jìn)行重新編碼(解碼)成字符,如果設(shè)置了,就按照設(shè)置的編碼格式進(jìn)行重新編碼(解碼)字符。

POST傳過去的都是單字節(jié)數(shù)據(jù).所以POST傳來的數(shù)據(jù)編碼都是ISO-8859-1的單字節(jié)數(shù)據(jù).因此英文和數(shù)字不會有亂碼...在這種情況下.過濾器和server.xml里的設(shè)置都是無效的.當(dāng)然request.setCharacterEncoding()也是無效的因為setCharacterEncoding的原理跟過濾器一樣;

對于上面問題正確的處理方式應(yīng)該為:

 String nameStr=new String(request.getParameter("name").getBytes("ISO-8859-1"),"UTF-8");

將post傳遞過來的ISO編碼內(nèi)容,改成UTF-8格式的內(nèi)容,然后再輸出。

html是什么

html的全稱為超文本標(biāo)記語言,它是一種標(biāo)記語言,包含了一系列標(biāo)簽.通過這些標(biāo)簽可以將網(wǎng)絡(luò)上的文檔格式統(tǒng)一,使分散的Internet資源連接為一個邏輯整體,html文本是由html命令組成的描述性文本,html命令可以說明文字,圖形、動畫、聲音、表格、鏈接等,主要和css+js配合使用并構(gòu)建優(yōu)雅的前端網(wǎng)頁。

以上是“html中post亂碼的解決方法”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI