網路傳輸遇到亂碼問題

2021-09-11 12:39:16 字數 1607 閱讀 9638

寫的伺服器開啟乙個網頁,漢字顯示亂碼,英文正常顯示。

排查許久,因為伺服器接受請求傳送網頁,傳送端專門標識了charset:utf-8,查閱的資料都說要將編碼轉義,設定為utf-8

;許久後意識到原來是未設定html編碼:這裡在對應的網頁html**中也相應的設定的是utf-8 (位置在head中)

ok成功顯示漢字!

過程為:程式中的中文字元—>伺服器—>進行解碼—>瀏覽器—>編碼進行顯示

順便根據這個問題說一下關於編碼的知識及中文在網路上傳輸的過程。

一、字元編碼的發展

發展:英文字符集:ascii編碼————不同國家文字字符集:ansi編碼(gbk、jis等)————全世界統一字符集:unicode編碼(utf—8,utf—16等),如下圖

二、字符集

在計算機底層中資料儲存的都是二進位制資料,要想獲取真正有意義的字元就必須讓二進位制與每乙個字元對應起來,這種關係就形成了一張編碼表。

常見字符集:

三、中文在網路上的傳播過程

簡而言之:

中文傳輸過程為:

瀏覽器中的中文字元—>進行編碼—>伺服器—>進行解碼—>程式;

程式中的中文字元—>伺服器—>進行解碼—>瀏覽器—>編碼進行顯示

四、亂碼產生原因及結局方式

(1)、瀏覽器中的中文字元以gbk進行編碼,以位元組流傳輸到伺服器,伺服器再以iso-8859-1進行解碼,以字元的形式傳輸給程式。

因為iso-8859-1編碼集不支援中文字元,所有解碼後的字元都是西歐字元,把這些字元傳輸給程式就產生了亂碼;

針對這個原因,只要把伺服器的編碼集設定為utf-8即可;

(2)、程式中的中文字元原樣傳輸到伺服器,伺服器要先對中文字元進行編碼再傳輸給瀏覽器,但因為iso-8859-1編碼集不支援中文字元,所以在字符集中查詢不到對應的編碼,編碼後就變成了問號,傳輸給了瀏覽器並顯示;

解決:將伺服器編碼集設定為utf-8;

將瀏覽器編碼集設定為utf-8;

(3)未設定html編碼

在**中設定相應的utf-8

部分摘自:

網路傳輸中遇到的位元組序問題

因為本人最近做的專案是路由器和交換機管理平台的開發,所以經常會遇到在一台路由器上測試沒有任何問題,但是在另一台裝置上測試就出現了問題的現象,最後發現還是位元組序的問題,雖然對位元組序的問題每次都很重視,但是總是在開發中遺漏或者忽略,位元組序問題真是令人防不勝防。究其根本原因,一方面是因為自己對位元組...

MYSQL遇到的亂碼問題

乙個程式設計師沒有遇到bug,就不能稱為乙個合格的程式設計師,我一直認為乙個程式設計師成長最快的方式就是一直遇到bug,只要自己沒有放棄就會快速成長。以後自己也會將一些自己遇到的奇葩錯誤放到這個分類裡,提醒自己。雖然我倒下了,但是你們還在前行。這一次是比較常見的資料庫亂碼問題。任何的資料在電腦中都是...

解決Json傳輸中文亂碼問題

1 如果是通過url傳遞 需要編碼兩次 var searchtext this.searchtext searchtext encodeuri searchtext searchtext encodeuri searchtext ajax 後台通過 string querycon request.g...