QCAD 中文編碼問題

2021-10-25 02:14:14 字數 1471 閱讀 6618

dxf檔案為文字檔案,中文編碼可能是utf-8編碼,也有可能是gbk編碼。qcad使用qt開發環境,字串統一按照utf-8編碼解碼,

所以解析dxf檔案時對字串首先按照utf-8轉碼,如果轉碼失敗則按照gbk轉碼。

qstring decode

(const std::string& str)

else

return rdxfservices::

parseunicode

(str_tmp)

;}

使用qstring類進行編碼轉換

qstring 類包含了大量關於文字字串編碼轉換的函式,涉及之前提到的 utf-8(變長)、utf-16、utf-32、本地語言編碼 local8bit(多位元組編碼),

還有標準 c++ 的普通字串 stdstring 和寬字串 stdwstring,

對於其他編碼轉為 qstring,採用的是 qstring::from* 靜態公有成員函式,

這些靜態函式返回乙個轉換好的 qstring 物件以供使用。

與之對應的是 qstring 類物件的 to* 函式,

qstring 物件可以呼叫這些 to* 函式轉出為其他編碼格式的字串。

from

todesc

fromlocal8bit

tolocal8bit

與作業系統及本地化語言相關,linux 一般是 utf-8 字串,windows 一般是 ansi 多位元組編碼字串。

fromutf8

toutf8

與 utf-8 編碼的字串相互轉換。

fromutf16

utf16 和unicode

與 utf-16(ucs2)編碼的字串互相轉換,utf16 函式與 unicode 函式功能一樣, 注意沒有 to 字首,因為 qstring 執行時的內碼就是 utf-16,字元的雙位元組採用主機位元組序。

fromucs4

toucs4

與 utf-32(ucs4)編碼的字串互相轉換,乙個字元用四個位元組編碼,佔空間多,應用較少。

fromstdstring

tostdstring

與 std::string 物件互相轉換,因為 c++11 規定標準字串 std::string 使用 utf-8 編碼,這對函式功能與上面 **utf8 轉碼函式相同。

fromstdwstring

tostdwstring

與 std::wstring 物件相互轉換,在 linux 系統裡寬字元是四位元組的 utf-32,在 windows 系統裡寬字元是兩位元組的 utf-16。因為不同平台有歧義,不建議使用。

中文編碼問題

分為兩個方向 資料傳輸方向 1 伺服器端 客戶端 伺服器端用什麼編碼,客戶端就用什麼編碼 2 客戶端 網路傳輸 伺服器端 當 客戶端是瀏覽器時 表單輸入全是英文是以iso 8859 1作為編碼,輸入有中文時則以utf 8作為編碼方式,這是瀏覽器的 內建功能。當客戶端是android時,輸入中文和英文...

中文編碼問題

專案中的所有中文都放在乙個單獨的配置檔案中,在專案的resource資源目錄下,該檔案的編碼是ascll的字符集。瀏覽器傳送表單中的資料會對其進行編碼,通過url編碼,打包資料然後傳送。處理瀏覽器的編碼問題可以用jdk自帶類庫 例 parameter 這是對於 url引數進行編碼方便記錄。其中 st...

中文編碼問題

中文傳到後台要編碼2次 vat suoshu 測試 var suoshu encodeuricomponent encodeuricomponent suoshu suoshu suoshu 這個js編碼的。你單獨對中文引數進行編碼 不要一起對url進行編碼 然後再後台再用 decodeurl 解碼...