溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》
  • 首頁 > 
  • 教程 > 
  • 服務(wù)器 > 
  • tomcat服務(wù)器如何配置字符集為utf-8徹底解決中文亂碼的問題詳解

tomcat服務(wù)器如何配置字符集為utf-8徹底解決中文亂碼的問題詳解

發(fā)布時間:2020-08-27 10:04:42 來源:腳本之家 閱讀:805 作者:bestcxx 欄目:服務(wù)器

什么是字符集

在介紹字符集之前,我們先了解下為什么要有字符集。我們在計算機屏幕上看到的是實體化的文字,而在計算機存儲介質(zhì)中存放的實際是二進制的比特流。那么在這兩者之間的轉(zhuǎn)換規(guī)則就需要一個統(tǒng)一的標準,否則把我們的U盤插到老板的電腦上,文檔就亂碼了;小伙伴QQ上傳過來的文件,在我們本地打開又亂碼了。于是為了實現(xiàn)轉(zhuǎn)換標準,各種字符集標準就出現(xiàn)了。簡單的說字符集就規(guī)定了某個文字對應(yīng)的二進制數(shù)字存放方式(編碼)和某串二進制數(shù)值代表了哪個文字(解碼)的轉(zhuǎn)換關(guān)系。

那么為什么會有那么多字符集標準呢?這個問題實際非常容易回答。問問自己為什么我們的插頭拿到英國就不能用了呢?為什么顯示器同時有DVI,VGA,HDMI,DP這么多接口呢?很多規(guī)范和標準在最初制定時并不會意識到這將會是以后全球普適的準則,或者處于組織本身利益就想從本質(zhì)上區(qū)別于現(xiàn)有標準。于是,就產(chǎn)生了那么多具有相同效果但又不相互兼容的標準了。

說了那么多我們來看一個實際例子,下面就是屌這個字在各種編碼下的十六進制和二進制編碼結(jié)果,怎么樣有沒有一種很屌的感覺?

字符集 16進制編碼 對應(yīng)的二進制數(shù)據(jù)
UTF-8 0xE5B18C 1110 0101 1011 0001 1000 1100
UTF-16 0x5C4C 1011 1000 1001 1000
GBK 0x8CC5 1000 1100 1100 0101

引言

我們在程序編寫的過程中總是會遇到一些中文編碼的問題,需要在程序中很多環(huán)節(jié)中去進行過濾和轉(zhuǎn)義,依舊有可能遇到中文亂碼的問題,下面是我的一個同事告訴我的方法,百時不靈,當(dāng)然是針對于tomcat服務(wù)器來說的。

此外,這個方法并不會對之前的那些方法造成沖突。

服務(wù)器/conf目錄/server.xml文件

將相關(guān)語句改為:

<Connector port="8008" protocol="HTTP/1.1"
    connectionTimeout="20000"
    redirectPort="8443" URIEncoding="UTF-8"/>

之前的語句沒有URIEncoding="UTF-8"這一句

有朋友問了一個問題:這個方法好像只針對get請求有效,對于POST請求需要怎么解決呢?除了req.setCharacterEncoding(&quot;UTF-8&quot;);這個方法之外?

其實亂碼問題需要整個系統(tǒng)統(tǒng)籌規(guī)劃的。從你的數(shù)據(jù)庫設(shè)計,后臺字符過濾,前臺數(shù)據(jù)傳遞。單純使用 req.set并不總會奏效。

所以,你如果是post提交,第一檢查數(shù)據(jù)庫格式是不是utf8的,第二,post提交form表單有沒有設(shè)置utf8

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對億速云的支持。

向AI問一下細節(jié)

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

AI