C++windows編碼問題

jessicaland發表於2024-03-14

需要注意的編碼方式有三處:

作業系統、程式編碼(與原始檔編碼一致)、通訊對方傳入字元的編碼

程式編碼(與原始檔編碼一致)
作業系統編碼
對方傳入的編碼
中文是否ok
c2A0編碼的空格
utf-8
utf-8
utf-8
ok
ok
utf-8
gbk
gbk 正常中文可以,特殊空格不行
ok
不ok
gbk
gbk
gbk
ok
不ok

一、作業系統

本地檔案路徑編碼跟隨作業系統的編碼

如作業系統編碼為GBK

(修改為UTF8的方法)

看作業系統檔案編碼:複製檔名到UE中,然後Ctrl + H看編碼格式

二、程式

原始檔編碼會對字串編碼產生影響(string格式自帶編碼方式、char[]不含編碼)

三、特殊空格字元C2A0(半形非中斷空格)

note:

在UTF-8編碼裡面存在一個特殊的字元,其編碼是“0xC2 0xA0”,轉換成字元的時候表現為一個半形空格,跟一般的半形空格(ASCII 0x20)不同的是它的寬度不會被壓縮,所以排版中常能用到它,常出現於HTML中的&nbsp。但是GB2312、Unicode之類並沒有這樣的字元

因此在GBK編碼的環境下,將無法處理這樣的字元



引用:
UTF-8轉GBK的悲劇:特殊字元C2A0_gbk特殊字元-CSDN部落格
c2a0 這樣的空格 NO-BREAK SPACE - 簡書 (jianshu.com)
(侵刪)

相關文章