摘要:一前言上面寫(xiě)了的亂碼問(wèn)題,接下來(lái)寫(xiě)的是中中的問(wèn)題,大楷我比較關(guān)心一點(diǎn),因?yàn)橛龅竭@個(gè)的情況多一些吧。注意是就行了,之前采用是由用戶設(shè)置的編碼方式解析,過(guò)后有個(gè)參數(shù)被默認(rèn)了,就使用了解析了,這兒是配置中的關(guān)鍵。
一、前言
上面寫(xiě)了console的亂碼問(wèn)題,接下來(lái)寫(xiě)的是web中servlet中的問(wèn)題,大楷我比較關(guān)心一點(diǎn),因?yàn)橛龅竭@個(gè)的情況多一些吧。直接開(kāi)始吧。
二、jsp和servlet中的亂碼問(wèn)題其實(shí)在java文件的編譯的情況和(一)中的情況是一樣的,不過(guò)這里是由WEB容器去調(diào)用JVM而已,那么我們得知道一些默認(rèn)的東西
比如特別重要的:(摘要)
如果Servlet 在運(yùn)行的過(guò)程中,需要接受從客戶端傳來(lái)的字符如:表單輸入的值和URL中傳入的值,此時(shí)如果程序中沒(méi)有設(shè)定接受參數(shù)時(shí)采用的編碼格式,則WEB 容器會(huì)默認(rèn)采用ISO-8859-1 編碼格式來(lái)接受傳入的值并在JVM 中轉(zhuǎn)化為UNICODE 格式的保存在WEB 容器的內(nèi)存中。Servlet 運(yùn)行后生成輸出,輸出的字符串是UNICODE 格式的,緊接著,容器將Servlet 運(yùn)行產(chǎn)生的UNICODE 格式的串(如html語(yǔ)法,用戶輸出的串等)直接發(fā)送到客戶端瀏覽器上并輸出給用戶,如果此時(shí)指定了發(fā)送時(shí)輸出的編碼格式,則按指定的編碼格式輸出到瀏覽器上,如果沒(méi)有指定,則默認(rèn)按ISO-8859-1 編碼發(fā)送到客戶的瀏覽器上。
注意是ISO-8859-1就行了,tomcat 5.0之前采用是由用戶設(shè)置的編碼方式解析,tomcat 5.0過(guò)后有個(gè)參數(shù)(useBodyEncodingForURI)被默認(rèn)了false,就使用了ISO-8859-1解析了,這兒是配置中的關(guān)鍵。
public class Hello extends HttpServlet { private static final long serialVersionUID = 4878915372815719687L; public Hello() { super(); } public void destroy() { super.destroy(); // Just puts "destroy" string in log } public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //輸入:設(shè)置請(qǐng)求編碼格式 request.setCharacterEncoding("GBK"); //輸出:設(shè)置響應(yīng)編碼格式 response.setContentType("text/html; charset=GBK"); PrintWriter out = response.getWriter(); out.write("
"); out.write("Hello, 中文!"); out.write("
"); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //輸入:設(shè)置請(qǐng)求編碼格式 request.setCharacterEncoding("GBK"); //輸出:設(shè)置響應(yīng)編碼格式 response.setContentType("text/html; charset=GBK"); //從請(qǐng)求中接收參數(shù) String input_str = request.getParameter("input_str"); String url_arg = request.getParameter("url_arg"); //出錯(cuò)處理 input_str = (null == input_str) ? "" : input_str; url_arg = (null == url_arg) ? "" : url_arg; PrintWriter out = response.getWriter(); out.write("
"); out.println("您輸入的字符串是:" + input_str); out.write("
"); //out.println("您的表單傳遞的URL參數(shù)是:" + new String(url_arg.getBytes("ISO-8859-1"), "GBK")); out.println("您的表單傳遞的URL參數(shù)是:" + url_arg); out.write("
"); } public void init() throws ServletException { // Put your code here } }
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/64744.html
摘要:一前言最近感覺(jué)自己對(duì)編碼的理解還不夠透徹,研究一下編碼的問(wèn)題,我覺(jué)得這個(gè)是值得研究的地方。自己開(kāi)始研究的時(shí)候,很細(xì)心的看了不少的資料,這里和大家分享一下,希望對(duì)大家有用,原理有些我就不一條一條的來(lái)了,重點(diǎn)描述下吧。 一、前言 最近感覺(jué)自己對(duì)編碼的理解還不夠透徹,研究一下編碼的問(wèn)題,我覺(jué)得這個(gè)是值得研究的地方。自己開(kāi)始研究的時(shí)候,很細(xì)心的看了不少的資料,這里和大家分享一下,希望對(duì)大家有用...
摘要:經(jīng)常有讀者在公眾號(hào)上問(wèn)亂碼的問(wèn)題,昨天又有一個(gè)小伙伴問(wèn)及此事,其實(shí)這個(gè)問(wèn)題很簡(jiǎn)單,但是想要說(shuō)清楚卻并不容易,因?yàn)槊總€(gè)人亂碼的原因都不一樣,給每位小伙伴都把亂碼的原因講一遍也挺費(fèi)時(shí)間的,因此,松哥今天決定寫(xiě)一篇文章,和大伙好好捋捋中的亂碼問(wèn)題 經(jīng)常有讀者在公眾號(hào)上問(wèn) JavaWeb 亂碼的問(wèn)題,昨天又有一個(gè)小伙伴問(wèn)及此事,其實(shí)這個(gè)問(wèn)題很簡(jiǎn)單,但是想要說(shuō)清楚卻并不容易,因?yàn)槊總€(gè)人亂碼的原因...
摘要:一前言在開(kāi)發(fā)的過(guò)程中,難免會(huì)出現(xiàn)中文亂碼的問(wèn)題。接下來(lái)寫(xiě)的是我在解決中文亂碼問(wèn)題時(shí)的學(xué)習(xí)心得,一是為了能加深印象,二是希望能幫初學(xué)者們解決一些疑惑。二正文之所以會(huì)出現(xiàn)中文亂碼,是因?yàn)樵谶M(jìn)行時(shí)的編碼方式不正確。 一、前言 在開(kāi)發(fā)JavaWeb的過(guò)程中,難免會(huì)出現(xiàn)中文亂碼的問(wèn)題。接下來(lái)寫(xiě)的是我在解決中文亂碼問(wèn)題時(shí)的學(xué)習(xí)心得,一是為了能加深印象,二是希望能幫初學(xué)者們解決一些疑惑。如有說(shuō)的不...
摘要:本文將介紹一種開(kāi)發(fā)常見(jiàn)的亂碼問(wèn)題。前提摘要在學(xué)習(xí)的過(guò)程中,亂碼問(wèn)題是經(jīng)常遇到的,無(wú)論是頁(yè)面亂碼還是數(shù)據(jù)庫(kù)亂碼。本文將羅列筆者在開(kāi)發(fā)過(guò)程中常常遇到幾種亂碼場(chǎng)景。菜鳥(niǎo)筆記下周不見(jiàn)不散 本文將介紹一種Java Web/Api 開(kāi)發(fā)常見(jiàn)的亂碼問(wèn)題。 前提摘要:在學(xué)習(xí)Java Web的過(guò)程中,亂碼問(wèn)題是經(jīng)常遇到的,無(wú)論是頁(yè)面亂碼還是數(shù)據(jù)庫(kù)亂碼。本文將羅列筆者在開(kāi)發(fā)過(guò)程中常常遇到幾種亂碼場(chǎng)景。 一...
摘要:在項(xiàng)目中發(fā)現(xiàn),使用下載中文名文件的時(shí)候,下載的文件名是亂碼的問(wèn)題。但是這個(gè)問(wèn)題在,,中是沒(méi)有的。原先以為是的,但是細(xì)細(xì)研究之下你會(huì)發(fā)現(xiàn)這個(gè)簡(jiǎn)單的文件下載問(wèn)題在協(xié)議里經(jīng)歷了多少波折。 在項(xiàng)目中發(fā)現(xiàn),使用Safari下載中文名文件的時(shí)候,下載的文件名是亂碼的問(wèn)題。但是這個(gè)問(wèn)題在IE,F(xiàn)irefox,Chrome中是沒(méi)有的。原先以為是Safari的bug,但是細(xì)細(xì)研究之下你會(huì)發(fā)現(xiàn)這個(gè)簡(jiǎn)單的文...
閱讀 1548·2023-04-26 02:50
閱讀 3553·2023-04-26 00:28
閱讀 1940·2023-04-25 15:18
閱讀 3225·2021-11-24 10:31
閱讀 999·2019-08-30 13:00
閱讀 1007·2019-08-29 15:19
閱讀 1777·2019-08-29 13:09
閱讀 2984·2019-08-29 13:06