日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

tomcat编码配置gbk_tomcat的编码设置 tomcat中文问题的解决

發布時間:2023/12/9 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 tomcat编码配置gbk_tomcat的编码设置 tomcat中文问题的解决 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

tomcat的編碼設置

tomcat中文問題的解決

第一,存文件必須以一種編碼存;讀文件也必須以一種編碼讀,如不特別設置,去系統默認的編碼,中文windows為GBK編碼。

從.java->.class過程是,先編寫.java文件并按莫種編碼方式保存,然后用javac方法編譯此文件,注意如.java沒按系統默認編碼保存則要帶encoding參數指明實際編碼,否則出錯,生成的.class文件存為系統默認編碼。

從.jsp->.java->.class,先存為某種編碼的.jsp文件,然后tomcat根據pageEncoding讀取并轉化為servlet存為系統默認編碼,然后同上面.java->.class過程。

第二,IDE的encoding為對系統下文件打開的解碼方式或保存的編碼方式。特例:如果.jsp文件有,則eclipse會自動存為UTF-8方式,不管eclipse的encoding是什么,這也是eclipse的聰明之處。

第三,

pageEncoding="UTF-8"表示此文件的編碼方式,必須與此文件存儲方式一致(所以eclipse會首選根據它來存文件),tomcat根據這個來讀此.jsp文件并編譯為servlet。

contentType="text/html;charset=UTF-8"表示當瀏覽器得到此文件時以什么方式解碼。例如:

test

我是個好人

會產生亂碼,因為存為UTF-8的文件被解碼為iso8859-1,這樣 如有中文肯定出亂碼。

至此,頁面應為:

中文問題

第四,

request.setCharacterEncoding("UTF-8")是把提交內容的字符集設為UTF-8

response.setCharacterEncoding("UTF-8")可以把頁面中的換為charset=UTF-8,是給告訴瀏覽器我這個文件的編碼方式。

第五,表單提交:無論何種表單提交都可以在后臺的java文件中通過String des = new String(s.getBytes("iso8859-1"),"UTF-8");來轉換成你想要的UTF-8編碼方式。但如果每處都加詞句太麻煩,故分post和get兩種方式區分提交(tomcat5以后分開處理,之前處理方式一樣,即都可以用request.setCharacterEncoding("UTF-8")方法處理,不過tomcat5以后get提交方法用此語句無效)。

1,post提交的數據:

程序加上org.springframework.web.filter.CharacterEncodingFilter過濾器.

encodingFilter

org.springframework.web.filter.CharacterEncodingFilter

encoding

UTF8

forceEncoding

true

encodingFilter

*.html

encodingFilter

*.jsp

因為規范要求瀏覽器提交數據都要用utf8編碼,所以這里設置編碼方式為UTF8.

特別注意:

a,這個過濾器只是簡單的調用:request.setCharacterEncoding(this.encoding);

在這個語句之前不能調用任何的request.getParameter()方法,否則會設置tomcat的缺省字符集為"ISO-8859-1",并且使setCharacterEncoding的調用失效.所以在這個過濾器之前的過濾器中不能有對getParameter這類方法的調用,比較安全的做法就是把這個過濾器盡量靠前放.

b,在server.xml中不能加上

這個value也設置tomcat的缺省字符集為"ISO-8859-1",使setCharacterEncoding的調用失效.可能其他的value也有這個問題,我沒有測試過.

如果要觀察http請求參數,可以考慮用過濾器或者其他工具,例如ethereal([url]http://www.ethereal.com/[/url])

2,get提交的數據:

兩種情況:

a,如果從地址欄直接輸入漢字,則一般編碼為"GBK",需要用

new String(request.getParameter("something").getBytes("ISO-8859-1"),"GBK")

取出

b,如果是頁面超連接連接中帶的漢字,則編碼根據頁面編碼的不同而不同,如果頁面的

content="text/html; charset=utf-8",則在tomcat/conf/server.xml中的配置文件中:

maxThreads="150" minSpareThreads="25" maxSpareThreads="75"

enableLookups="false" redirectPort="8443" acceptCount="100"

debug="0" connectionTimeout="20000" useBodyEncodingForURI="true"

disableUploadTimeout="true" />

加上:useBodyEncodingForURI="true"即可正常使用getParameter取出正確內容.

如果content="text/html; charset=GBK",需用

new String(request.getParameter("something").getBytes("ISO-8859-1"),"GBK")

取出,其他情況類似.

總結:

1,所有頁面使用utf8編碼,

2,服務器加上過濾器,

3,server.xml中不要使用

4,server.xml文件加上useBodyEncodingForURI="true"

這樣應該可以搞定大多數前臺的中文問題.至于地址欄輸入中文,不支持也罷,一般的程序很少要求

從這里輸入.

第六,連接數據庫

1、mysql配置文件:

修改mysql在windows\my.ini里default-character-set=utf-8

2、mysql里數據庫和表也都設為utf8_unicode_ci

3、數據庫連結:jdbc:mysql://localhost/mydb?useUnicode=true&characterEncoding=utf-8

注意,關鍵就在于此:此句中間是'&'不是'&'這是因為數據庫連結時,在.jsp和.java文件中應該用&號,而XML文件中需要用&

對于Web容器來說,如果你不設置,默認是ISO8859-1

String des = new String(s.getBytes("iso8859-1"),"UTF-8");都可以使用這個 不論哪里,有亂碼就是用

總結

以上是生活随笔為你收集整理的tomcat编码配置gbk_tomcat的编码设置 tomcat中文问题的解决的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。