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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

乱码的根本原因是字节和字符的问题(转)

發(fā)布時(shí)間:2025/4/16 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 乱码的根本原因是字节和字符的问题(转) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1,為什么會(huì)出現(xiàn)亂碼

? ? ?亂碼的根本原因是字節(jié)和字符的問題。

? ? ?我們?cè)诖髮W(xué)學(xué)習(xí)c的時(shí)候,老師就有介紹字符和字節(jié)。

? ? ?字節(jié)由8個(gè)bit位表示,最早的編碼是ASCII碼,ASCII碼是單字節(jié)的編碼字符。因?yàn)閱巫止?jié)8個(gè)bit位對(duì)于中文字符和其他國家的字符來說根本不夠用,需要更多的bit位來表示字符。我們現(xiàn)在常見的編碼有GBK,BIG5,GB2312,UTF-8,通過編碼映射表可以確定bit位和字符之間的映射關(guān)系。

? ? 一個(gè)應(yīng)用從服務(wù)端把需要展現(xiàn)的文字換成一段字節(jié)流傳輸給瀏覽器,瀏覽器把字節(jié)流組裝字符展現(xiàn)的過程一般是這樣(應(yīng)用的編碼是GBK):

? ? 服務(wù)端:String text->getBytes("GBK")->byte[] bytes

? ? 瀏覽端:byte[] bytes->new String("bytes","GBK") ->String text

? ?如果字節(jié)流處理的轉(zhuǎn)換過程使用編碼不一致就會(huì)出現(xiàn)亂碼問題。

2,常見的亂碼現(xiàn)象

? ? a,提交表單的時(shí)候出現(xiàn)亂碼(頁面編碼和服務(wù)端編碼不一致)

? ? ? 頁面是jsp的時(shí)候,會(huì)經(jīng)常出現(xiàn)的問題,這個(gè)比較容易發(fā)現(xiàn)和修改,只要改下jsp文件的頭就可以了。

? ? ??<%@ page contentType="text/html;charset=GB2312" language="java" ?%>

? ? b,系統(tǒng)之間接口調(diào)用出現(xiàn)亂碼(如果兩個(gè)應(yīng)用的編碼格式不一致,get和post方式都是會(huì)出現(xiàn)亂碼問題的)

? ? ? ?今天遇到一個(gè)問題,系統(tǒng)A調(diào)用我們的http接口他們提交過來的數(shù)據(jù)是亂碼,主要是因?yàn)閮蓚€(gè)系統(tǒng)的編碼格式不一致。我們的應(yīng)用是GBK,對(duì)方的是UTF-8。

? ? ? ?解決方法是:

? ? ? ? ? ?需要他們重新指定下http request的編碼格式。

? ?c,和前端交互的時(shí)候容易出現(xiàn)亂碼(同一個(gè)應(yīng)用get方式)

? ? ? ?頁面腳本傳種中文到后臺(tái)的時(shí)候會(huì)出現(xiàn)亂碼,而且中文編碼是不同的瀏覽器有各自的實(shí)現(xiàn),后端想用?new String(“亂碼”.getBytes(“GBK”),”UTF-8”)這種方式 ?

? ? ? ?去還原字符,最后得到是問號(hào)。

? ? ? ? 前端來說最簡單的解決方式是用js對(duì)頁面上傳輸?shù)胶笈_(tái)的中文進(jìn)行encodeURI編碼,傳到服務(wù)端如果是進(jìn)行decode。

? ? ? (tomcat默認(rèn)會(huì)先進(jìn)行一次decode,所有有時(shí)候js會(huì)對(duì)中文進(jìn)行2次編碼)

? ? ? ?另外一種get方式亂碼的解決方式是修改容器的encodingURI來實(shí)現(xiàn)。

? ? ? ?jboss :?修改?/server/default/deploy/jbossweb.sar/server.xml? ? ? ? ? ? ??

<Connector port="6666"?address="${jboss.bind.address}" ??maxThreads="150"?minSpareThreads="25"?maxSpareThreads="75" ??enableLookups="false"?redirectPort="8443"?acceptCount="100" ??connectionTimeout="20000"?disableUploadTimeout="true"?<span style="color: #ff0000;">URIEncoding="GBK"</span>/>

   tomcat:/conf/server.xml

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

  

?

?

? ? ? ? ? ? ? ? ?

?

? ? ? ?

? ??https://www.ibm.com/developerworks/cn/java/j-lo-chinesecoding/

http://www.cnblogs.com/iusmile/archive/2012/06/01/2531262.html

轉(zhuǎn)載于:https://www.cnblogs.com/softidea/p/3907135.html

《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

總結(jié)

以上是生活随笔為你收集整理的乱码的根本原因是字节和字符的问题(转)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。