国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
tomcat的編碼設(shè)置 - 小菜毛毛技術(shù)分享 - BlogJava




第一,存文件必須以一種編碼存;讀文件也必須以一種編碼讀,如不特別設(shè)置,去系統(tǒng)默認(rèn)的編碼,中文windows為GBK編碼。

從.java->.class過(guò)程是,先編寫(xiě).java文件并按莫種編碼方式保存,然后用javac方法編譯此文件,注意如.java沒(méi)按系統(tǒng)默認(rèn)編碼保存則要帶encoding參數(shù)指明實(shí)際編碼,否則出錯(cuò),生成的.class文件存為系統(tǒng)默認(rèn)編碼。

從.jsp->.java->.class,先存為某種編碼的.jsp文件,然后tomcat根據(jù)pageEncoding讀取并轉(zhuǎn)化為servlet存為系統(tǒng)默認(rèn)編碼,然后同上面.java->.class過(guò)程。

第二,IDE的encoding為對(duì)系統(tǒng)下文件打開(kāi)的解碼方式或保存的編碼方式。特例:如果.jsp文件有<%@ page language="java" pageEncoding="UTF-8"%>,則eclipse會(huì)自動(dòng)存為UTF-8方式,不管eclipse的encoding是什么,這也是 eclipse的聰明之處。

第三,
pageEncoding="UTF-8"表示此文件的編碼方式,必須與此文件存儲(chǔ)方式一致(所以eclipse會(huì)首選根據(jù)它來(lái)存文件),tomcat根據(jù)這個(gè)來(lái)讀此.jsp文件并編譯為servlet。
contentType="text/html;charset=UTF-8"表示當(dāng)瀏覽器得到此文件時(shí)以什么方式解碼。例如:
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ page contentType="text/html;charset=iso8859-1"%>
<html>
<head>
<title>test</title>
</head>
<body>
我是個(gè)好人
</body>
</html>
會(huì)產(chǎn)生亂碼,因?yàn)榇鏋閁TF-8的文件被解碼為iso8859-1,這樣 如有中文肯定出亂碼。

至此,頁(yè)面應(yīng)為:
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ page contentType="text/html;charset=UTF-8"%>
<html>
<head>
<title>中文問(wèn)題</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
</html>

第四,
request.setCharacterEncoding("UTF-8")是把提交內(nèi)容的字符集設(shè)為UTF-8
response.setCharacterEncoding("UTF-8")可以把頁(yè)面中的<%@ page contentType="text/html;charset=iso8859-1"%>換為charset=UTF-8,是給告訴瀏覽器我這個(gè) 文件的編碼方式。

第五,表單提交:無(wú)論何種表單提交都可以在后臺(tái)的java文件中通過(guò)String des = new String(s.getBytes("iso8859-1"),"UTF-8");來(lái)轉(zhuǎn)換成你想要的UTF-8編碼方式。但如果每處都加詞句太麻煩,故 分post和get兩種方式區(qū)分提交(tomcat5以后分開(kāi)處理,之前處理方式一樣,即都可以用 request.setCharacterEncoding("UTF-8")方法處理,不過(guò)tomcat5以后get提交方法用此語(yǔ)句無(wú)效)。
1,post提交的數(shù)據(jù):
程序加上org.springframework.web.filter.CharacterEncodingFilter過(guò)濾器.
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>

<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>*.html</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>

因?yàn)橐?guī)范要求瀏覽器提交數(shù)據(jù)都要用utf8編碼,所以這里設(shè)置編碼方式為UTF8.

特別注意:
a,這個(gè)過(guò)濾器只是簡(jiǎn)單的調(diào)用:request.setCharacterEncoding(this.encoding);
在這個(gè)語(yǔ)句之前不能調(diào)用任何的request.getParameter()方法,否則會(huì)設(shè)置tomcat的缺省字符集為"ISO-8859-1",并且 使setCharacterEncoding的調(diào)用失效.所以在這個(gè)過(guò)濾器之前的過(guò)濾器中不能有對(duì)getParameter這類方法的調(diào)用,比較安全的做 法就是把這個(gè)過(guò)濾器盡量靠前放.
b,在server.xml中不能加上<Valve className="org.apache.catalina.valves.RequestDumperValve"/>
這個(gè)value也設(shè)置tomcat的缺省字符集為"ISO-8859-1",使setCharacterEncoding的調(diào)用失效.可能其他的value也有這個(gè)問(wèn)題,我沒(méi)有測(cè)試過(guò).
如果要觀察http請(qǐng)求參數(shù),可以考慮用過(guò)濾器或者其他工具,例如ethereal([url]http://www.ethereal.com/[/url])

2,get提交的數(shù)據(jù):
兩種情況:
a,如果從地址欄直接輸入漢字,則一般編碼為"GBK",需要用
new String(request.getParameter("something").getBytes("ISO-8859-1"),"GBK")
取出
b,如果是頁(yè)面超連接連接中帶的漢字,則編碼根據(jù)頁(yè)面編碼的不同而不同,如果頁(yè)面的
content="text/html; charset=utf-8",則在tomcat/conf/server.xml中的配置文件中:
<!-- Define a non-SSL Coyote HTTP/1.1 Connector on port 8080 -->
<Connector port="8080"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
debug="0" connectionTimeout="20000" useBodyEncodingForURI="true"
disableUploadTimeout="true" />

加上:useBodyEncodingForURI="true"即可正常使用getParameter取出正確內(nèi)容.
如果content="text/html; charset=GBK",需用
new String(request.getParameter("something").getBytes("ISO-8859-1"),"GBK")
取出,其他情況類似.

總結(jié):
1,所有頁(yè)面使用utf8編碼,
2,服務(wù)器加上過(guò)濾器,
3,server.xml中不要使用
<Valve className="org.apache.catalina.valves.RequestDumperValve"/>
4,server.xml文件加上useBodyEncodingForURI="true"
這樣應(yīng)該可以搞定大多數(shù)前臺(tái)的中文問(wèn)題.至于地址欄輸入中文,不支持也罷,一般的程序很少要求
從這里輸入.

第六,連接數(shù)據(jù)庫(kù)

1、mysql配置文件:
修改mysql在windows\my.ini里default-character-set=utf-8

2、mysql里數(shù)據(jù)庫(kù)和表也都設(shè)為utf8_unicode_ci

3、數(shù)據(jù)庫(kù)連結(jié):jdbc:mysql://localhost/mydb?useUnicode=true&characterEncoding=utf-8
注意,關(guān)鍵就在于此:此句中間是'&'不是'&'這是因?yàn)閿?shù)據(jù)庫(kù)連結(jié)時(shí),在.jsp和.java文件中應(yīng)該用&號(hào),而XML文件中需要用&

對(duì)于Web容器來(lái)說(shuō),如果你不設(shè)置,默認(rèn)是ISO8859-1
String des = new String(s.getBytes("iso8859-1"),"UTF-8");都可以使用這個(gè) 不論哪里,有亂碼就是用
posted on 2010-01-12 17:41 
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
JSP頁(yè)面編碼問(wèn)題研究 [簡(jiǎn)便]
JSP中的pagaEncoding和contentType中charset的區(qū)別
pageEncoding和charset區(qū)別
JSP中contentType的charset和pageEncoding區(qū)別|編程程序
JAVA之編碼/解碼-文件輸入輸出流
JSP頁(yè)面編碼問(wèn)題分析
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服