頁亂碼,就是指平時(shí)我們打開一個(gè)網(wǎng)頁它的內(nèi)容看起來奇奇怪怪,不是正常的中文形態(tài),那會(huì)不會(huì)是一種特殊的非中文系語言呢?有可能,但是可以分辨!
正常的非中文系語言
中文亂碼
那么為什么會(huì)發(fā)生亂碼呢?首先,需要明確以下幾點(diǎn):
1,亂碼不是由于你的設(shè)備原因?qū)е?/p>
2,不只有中文會(huì)產(chǎn)生亂碼,其它語言也會(huì)有亂碼
3,亂碼的根本原因是因?yàn)榛ヂ?lián)網(wǎng)的原因
互聯(lián)網(wǎng)方便的把全地球的人們連接在一起,于是網(wǎng)絡(luò)上的內(nèi)容可以是任意一種語言產(chǎn)生的,然后當(dāng)它傳播到另外一種語言使用者(比如中文)面前的時(shí)候,因?yàn)樗麄兯幍幕ヂ?lián)網(wǎng)環(huán)境不同,而計(jì)算機(jī)又不足夠智能的分辨應(yīng)該以什么樣的語言形式展示內(nèi)容的時(shí)候就發(fā)生了頁面亂碼。
那么網(wǎng)頁亂碼怎么解決呢?同樣的,還是需要明確下面幾點(diǎn):
1,遇到網(wǎng)頁亂碼不要慌,你的設(shè)備沒有問題
2,網(wǎng)頁亂碼問題絕對(duì)不需要內(nèi)容閱讀者即用戶自己解決
3,如果你好奇想自己解決,那么只需要通過搜索引擎搜索關(guān)鍵字:“ie/360/chrome 網(wǎng)頁編碼設(shè)置”,根據(jù)出來的內(nèi)容隨便找一篇照著點(diǎn)幾次鼠標(biāo)就可以了!
這篇常識(shí)的目的是告訴你,互聯(lián)網(wǎng)后來是如何解決網(wǎng)頁亂碼的,也就是前面提到的,網(wǎng)頁亂碼不需要用戶自己解決。
隨著互聯(lián)網(wǎng)越來普及,亂碼的問題起初非常的容易發(fā)生,當(dāng)然了,發(fā)生的原因也很簡(jiǎn)單,內(nèi)容所處的語言環(huán)境不同,計(jì)算機(jī)不知道該怎么顯示了。
于是各個(gè)國家的網(wǎng)絡(luò)權(quán)威機(jī)構(gòu)就一起組織了一個(gè)聯(lián)盟,專門用來解決網(wǎng)絡(luò)上內(nèi)容亂碼的問題,并且給這個(gè)聯(lián)盟起了一個(gè)名字叫:Unicode
組織建好之后該是商量具體的解決方案了!因?yàn)樵谶@之前,每個(gè)國家都有自己的語言在計(jì)算機(jī)中的表示形式(實(shí)際就是一張表格),而且隨著各國語言的變遷,這張表格還會(huì)時(shí)不時(shí)升級(jí)一下。
那怎么辦呢?最后,Unicode 組織確定了一種非常便捷的解決方法。就是讓各個(gè)國家把自己語言在計(jì)算機(jī)中的表示形式表格,都提交給 Unicode 組織,由 Unicode 組織統(tǒng)一管理,然后把它們都合并到一起形成一張非常大的表格,再交給計(jì)算機(jī)廠商,在它們出廠計(jì)算機(jī)的時(shí)候默認(rèn)的把這張巨大的表格都存放到計(jì)算機(jī)中,這樣每臺(tái)計(jì)算機(jī)就相當(dāng)于擁有全世界各種語言的表示形式。
這樣當(dāng)一種語言的內(nèi)容傳播到另外一種語言使用者面前的時(shí)候,計(jì)算機(jī)就能夠以某種機(jī)制監(jiān)測(cè)到使用者的語種,然后使用對(duì)應(yīng)的表示形式來顯示內(nèi)容,這樣就不會(huì)發(fā)生亂碼了。
但是正如我們想象的,這張表格非常的龐大,放到用戶的計(jì)算機(jī)里的時(shí)候也是要占用一定的空間呢,所以 Unicode 組織就想辦法怎么樣盡可能的既能讓這張表格表示盡可能多的語言,又能盡可能的小。
于是就出現(xiàn)了“編碼”這個(gè)概念!編碼的本質(zhì)就是說針對(duì)不同的語言,使用的存儲(chǔ)空間不一樣!比如,漢字和英文字母的占用空間就完全不同,這樣就了各種形式的編碼方案,網(wǎng)絡(luò)上被人們熟知的編碼方案包括:ASCII,UTF8,GBK,GB2312等,目前國際上最通用的編碼方案是UTF8。
現(xiàn)在想必大家都知道亂碼的原因了,那么你知道為什么現(xiàn)在我們很少遇到網(wǎng)頁亂碼了嗎?
哈,沒錯(cuò),因?yàn)槲覀兊碾娔X都升級(jí)換代了呀 ^_^
最后,大家現(xiàn)在還有遇到網(wǎng)頁亂碼嗎?留言互動(dòng)吧 ^_^
文亂碼問題是比較常見和煩人的問題,本文通過一個(gè)小程序介紹了如何通過Servlet從上一個(gè)頁面獲取參數(shù),
方法很簡(jiǎn)單:調(diào)用request.getParameter(String s)方法。
解決中文亂碼問題的方法是:
首先要設(shè)置response響應(yīng)的格式:response.setContextType("text/html;charSet=GBK");
然后在加上request.setCharacterEncoding("GBK")
需要注意的是這是解決post方式提交的內(nèi)容的中文亂碼問題。
解決get方式提交內(nèi)容的中文亂碼問題的方法:
在Tomcat->conf文件夾->server.xml-->connecter標(biāo)簽里加上:
URIEncoding="GBK"(注意:在xml里面“=”兩邊不要有空格)
關(guān)于Post和Get之間的區(qū)別可以看我轉(zhuǎn)載的另一篇博文:
HTTP POST GET 本質(zhì)區(qū)別詳解
例子:
1.threeparams.html
2.ThreeParams.java
補(bǔ)充:
上面的這個(gè)例子.html中每個(gè)name都不一樣,如果有多個(gè)一樣的name時(shí),可以按如下的方法來獲取:
1)Enumeration paramNames=request.getParameterNames()
調(diào)用此方法獲得所有參數(shù)的名字,返回一個(gè)Enumeration
2) while(paramNames.hasMoreElements()){
String paramName=(String)paramNames.nextElement();
String[] paramValues=request.getParameterValues(paramName);
...
幾天有OMI的用戶反映,安裝OMI時(shí)有中文亂碼現(xiàn)象,我還說不可能。我們的程序在windows,linux都部署過無數(shù)次了,開發(fā)時(shí)都是UTF8編碼的,咋還會(huì)亂碼呢。結(jié)果看了半天也沒看出個(gè)啥,還是沒解決。
最近新安裝程序時(shí),新下載了一個(gè)tomcat8.5的版本,一跑程序還真是html頁亂碼了,但JSP頁沒事。因?yàn)橹拔覀兊某绦蚨际桥茉趖omcat7,最高是tomcat8.0,沒試過更高的,高版本確實(shí)有問題,且控制臺(tái)中文也是亂碼。
一、嘗試了一些網(wǎng)友給的辦法,下面說一下解決方案:
1、tomcat\bin\catalina.bat 中添加,
set JAVA_OPTS=-Xms512m -Xms1024m -XX:MaxPermSize=1024m -Dfile.encoding=UTF-8
我的添加位置如圖
?前面是正好順便設(shè)置了JVM的內(nèi)存,解決問題的主要后面的部分。
2、修改tomcat\conf\server.xml,加入 URIEncoding="UTF-8"
加入如圖位置
?好象是第一步就可以了,保險(xiǎn)起見第二步也加上吧 。
二、關(guān)于控制臺(tái)亂碼解決辦法:
修改tomcat\conf\logging.properties
#java.util.logging.ConsoleHandler.encoding=UTF-8(GBK)
將UTF-8改為GBK,或者把整行注掉
我是把相關(guān)編碼全注了
以上,如未解決問題可以加QQ群交流,群名:Kettle實(shí)戰(zhàn)。
*請(qǐng)認(rèn)真填寫需求信息,我們會(huì)在24小時(shí)內(nèi)與您取得聯(lián)系。