解決空格亂碼或者空格編碼格式不正確的相關問題

2021-09-30 19:30:30 字數 786 閱讀 7620

問題的關鍵,是編碼方式:如果使用的encoding是utf-8的話,就會發生這種情況。問題的根源,在於utf-8這種編碼裡面,存在乙個特殊的字元,其編碼是「0xc2 0xa0」,轉換成字元的時候,表現為乙個空格,跟一般的半形空格(ascii 0x20)一樣,唯一的不同是它的寬度不會被壓縮,因此比較多的被用於網頁排版(如首行縮排之類)。而其他的編碼方式如gb2312、unicode之類並沒有這樣的字元,因此如果簡單地進行編碼轉換,生成地gb2312/unocode字串中,這個字元就會被替換成為問號(ascii ox3f)。此時如果進行寫庫、寫檔案之類,就會把問號直接寫入了。當然此時會有一種山寨方式:直接替換問號為空格。可是這種方法,會把原本真正的問號也替換掉。

使用utf-8進行htmldecode的時候,對於語句開頭的( ),就會被自動轉換成為這個特殊的空格,可能是判斷為放在開頭的空格,一定是用來排版的。在轉換為其他編碼之前,這個特殊的空格受到的待遇與普通的半形空格是一致的,甚至也會被trim()去掉。

因此,碰到這個問題的原因有兩種:一種是在utf-8編碼下進行了轉換,產生了這個字元;還有一種就是網頁中直接採用了這個字元進行排版。知道了具體原因,就有正規的解決方法了。方法就是:在得到utf-8字串之後,先進行乙個替換,把這個特殊的空格替換為普通的空格,如果是html串,建議替換為( )。

byte space = new byte;    

string utfspace = new string(space,"utf-8");

desc = desc.replaceall(utfspace, " ");

**:

urlencode中的空格編碼 20或者

轉轉轉,為了提醒自己,侵刪 url中的空格有時候被編碼成 20,有時候被編碼成加號 曾經迷糊過一段時間,後來查了下資料才搞明白。乙個url的基本組成部分包括協議 scheme 網域名稱,埠號,路徑和查詢字串 路徑引數和錨點標記就暫不考慮了 路徑和查詢字串之間用問號?分離。例如路徑為index,查詢字...

python亂碼解決以及sys編碼格式

1.python中文亂碼解決 錯誤 syntaxerror non ascii character xe9 in file 解決 加上 coding utf 8 如下 coding utf 8 print 中文亂碼 2.修改系統模組 sys 的編碼格式 2.1.方式一 coding utf 8 匯入...

oracle的編碼格式,解決亂碼問題

修改oracle的編碼格式,解決亂碼問題 查詢客戶端字符集 select userenv language from dual 1 管理員使用者連線 sql conn sys 密碼 as sysdba 2 關閉資料庫。sql shutdown immediate 3 啟動資料庫到mount狀態下。s...