欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

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

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

開(kāi)通VIP
解決基于tomcat的web應用亂碼問(wèn)題 - J2EE開(kāi)發(fā)者 - web思想社區 關(guān)注互聯(lián)網(wǎng)平臺級架構設計,UNIX/LINUX系統管理,項目管理,個(gè)人職業(yè)規劃及RIA,CSS/JS/XML,ASP,



我想只要是在tomcat上做過(guò)涉及中文處理的web應用的人幾乎都會(huì )遇到這個(gè)問(wèn)題,起初遇到這個(gè)問(wèn)題很是令人頭疼,因為在網(wǎng)上搜了很多解決方案來(lái)嘗試,最終得到的中文字符還是變成了火星的泰坦文。原因不是因為網(wǎng)上的方法不對,而是網(wǎng)上的東西都太散了,只能解決一個(gè)點(diǎn)的問(wèn)題,然而當整個(gè)系統運行起來(lái)的時(shí)候還是可能會(huì )出現亂碼。那么這究竟是什么原因呢?根據我的實(shí)際應用情況,我系統地總結了一下可能出現亂碼的情況和解決的方法。

先說(shuō)說(shuō)亂碼的原理,其實(shí)歸根結底就是編碼和解碼時(shí)所使用的格式不一致,或者有些編碼格式根本不支持的文字類(lèi)型。例如一個(gè)中文字符串編碼的時(shí)候采用的是“UTF-8”,解碼的時(shí)候卻使用“ISO-8859-1”,這樣就會(huì )產(chǎn)生亂碼。

了解了亂碼產(chǎn)生的基本原理之后,我們來(lái)看看一個(gè)基于tomcat的web應用到底在哪些環(huán)節可能出現亂碼問(wèn)題。通過(guò)上面的亂碼原理簡(jiǎn)述,我們可以知道,產(chǎn)生亂碼的地方一定都是有涉及到編解碼的地方。從我遇到的亂碼情況來(lái)看,出現亂碼的地方大概會(huì )有以下幾處:一是客戶(hù)端服務(wù)端之間傳輸的內容出現亂碼;二是服務(wù)端和數據庫之間出現亂碼;三是服務(wù)端和應用服務(wù)器之間出現亂碼。其實(shí)無(wú)論是哪里出現亂碼,解決的方法都是一樣的,就是統一編解碼格式。

對于第一類(lèi)情況,即客戶(hù)端和服務(wù)端之間出現亂碼的解決。首先看看服務(wù)端向客戶(hù)端輸出產(chǎn)生亂碼的情況。我們以jsp為例。一般jsp文件頭部會(huì )像下面這樣:

  1. <%@ page contentType=”text/html; charset= ISO-8859-1″ pageEncoding=” ISO-8859-1″%>
復制代碼

這里是jsp文件默認的字符集和編碼格式都是ISO-8859-1。ISO-8859-1是不支持中文的。所以如果一個(gè)jsp文件采用這樣的頭部,而其中又包含有輸出到客戶(hù)端的中文的話(huà),那么當客戶(hù)端訪(fǎng)問(wèn)該頁(yè)面時(shí),所有的中文都會(huì )顯示成亂碼。這種情況是編碼格式原生就不支持中文的情況。另外一種情況就是編碼格式不統一的情況,請看下面這個(gè)jsp文件頭部:

  1. <%@ page contentType=”text/html; charset=ISO-8859-1″ pageEncoding=”UTF-8″%>
復制代碼

在這里我指定了頁(yè)面的編碼格式為UTF-8,而contentType中聲明的字符集卻是ISO-8859-1,這樣,在客戶(hù)端訪(fǎng)問(wèn)該頁(yè)面的時(shí)候,中文依然會(huì )是亂碼。所以解決這個(gè)問(wèn)題的要點(diǎn)就是要使用統一的編碼,并且該編碼要支持中文,像下面這樣,中文就可以正確顯示了:

  1. <%@ page contentType=”text/html; charset=UTF-8″ pageEncoding=”UTF-8″%>
復制代碼

再來(lái)講講客戶(hù)端向服務(wù)端提交數據的時(shí)候出現亂碼的解決。當我們通過(guò)form向服務(wù)端提交數據的時(shí)候,瀏覽器會(huì )幫我們把數據先進(jìn)行編碼后再提交,我們可以通過(guò)以下方式來(lái)指定瀏覽器如何進(jìn)行編碼,在html文件中加上如下這句話(huà):

  1. <meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″>
復制代碼

這里就指定了提交到服務(wù)端的數據采用UTF-8編碼,當然這里只是指定了提交的數據編碼格式,還需要在服務(wù)端對接受到的請求做同樣的字符集設置才行,如下:

  1. request.setCharacterEncoding(”UTF-8″);
復制代碼

這樣,服務(wù)端接受到請求后取出來(lái)的參數就能正確解碼成中文。

第二種情況就是服務(wù)端和數據庫之間出現的亂碼。以mysql為例,一般我們配置數據源地址都是這樣的:

  1. <property value=”jdbc:mysql://localhost:3306/dbname/>
復制代碼

假如數據庫的編碼格式是utf-8的,這個(gè)時(shí)候假如服務(wù)端發(fā)送給數據庫的數據的編碼格式不是utf-8的話(huà),存入數據庫的數據就會(huì )變成亂碼。這個(gè)時(shí)候我們可以通過(guò)在配置數據源的時(shí)候明確指定編碼格式來(lái)解決這個(gè)問(wèn)題,配置如下:

  1. <property value=”jdbc:mysql://localhost:3306/dbname?useUnicode=true&characterEncoding=utf-8″/>
復制代碼

可以看到只是在原來(lái)配置的基礎上增加了一些參數。

    第三種情況是服務(wù)端和應用服務(wù)器(也就是tomcat)之間的亂碼問(wèn)題。這個(gè)問(wèn)題不太好發(fā)現,因為最開(kāi)始我遇到這個(gè)問(wèn)題的時(shí)候,我從前端html的字符編 碼到數據庫字符編碼都查遍了,發(fā)現所有的編碼都是統一的,而且也是支持中文,但是還是會(huì )出現亂碼。費了很多周折,查了很多資料才發(fā)現原來(lái)是應用服務(wù)器的問(wèn) 題,因為tomcat默認的字符集是ISO-8859-1,所以當使用中文時(shí)就會(huì )出現亂碼。還好這個(gè)問(wèn)題解決起來(lái)也是比較簡(jiǎn)單的。首先在tomcat的安 裝目錄下找到conf文件夾,打開(kāi)該文件夾中的server.xml文件,不同的tomcat版本這個(gè)文件可能會(huì )有所差別,我用的 tomcat6.0.18,將其中相應的配置修改如下:


  1. <Connector port=”8080″ protocol=”HTTP/1.1″
  2.                connectionTimeout=”20000″
  3.                redirectPort=”8443″
  4. URIEncoding=”UTF-8″ />
復制代碼

注意,最后一個(gè)URIEncoding=”UTF-8″在原來(lái)的配置中是沒(méi)有的,只要加上這個(gè)配置參數,tomcat就能正確識別UTF-8編碼的字符了。

    以上就是我在tomcat上做web應用時(shí)所遇到的中文亂碼的各種情況,注意文中提到的支持中文編碼的字符集時(shí)只是以UTF-8為例,其它比較常用的支持 中文編碼的字符集還有GBK,gb2312等。你可以根據自己的需要選擇合適的字符集。但一定要記住,不管你選擇使用什么字符集,一旦選定之后,整個(gè)應用 都應盡量使用統一的字符編碼格式,盡管某些字符集之間是相互兼容的,但也可能產(chǎn)生不必要的麻煩或者未知的問(wèn)題。在實(shí)際應用中我相信大家也都會(huì )遇到各種千奇 百怪的亂碼問(wèn)題,歡迎大家繼續補充解決之道,多多益善。





本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
jsp頁(yè)面 中文亂碼問(wèn)題2
SecureCRT顯示亂碼的解決辦法(centos)
struts原理與實(shí)踐(4)
深入分析Oracle字符集(轉載)
mysql亂碼關(guān)鍵處理總結 - SSH - 周老師科研站
關(guān)于字符集和亂碼的思考
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久