-1
的字符集爲默認值,我機器中的std :: string爲GBK,我在程序中編寫的字符串是用gbk編碼的,但有時我從服務器收回數據,數據是用UTF- 8,我想確定哪個chatacter設置字符串正在使用。我看到了utf-8和gbk編碼方法,很難自行完成。確定字符串
的字符集爲默認值,我機器中的std :: string爲GBK,我在程序中編寫的字符串是用gbk編碼的,但有時我從服務器收回數據,數據是用UTF- 8,我想確定哪個chatacter設置字符串正在使用。我看到了utf-8和gbk編碼方法,很難自行完成。確定字符串
要檢查std::string
是否包含UTF-8內容,請將其解碼爲UTF-8並查看它是否失敗。
若要檢查std::string
是否包含GBK,請將其解碼爲GBK並查看它是否失敗。
有大量可用的轉換庫,如ICONV和ICU,這些庫通常預裝在大多數平臺上。或者使用平臺特定的API,如Windows上的MultiByteToWideChar()
(GBK由代碼頁936和54936覆蓋,而UTF-8由代碼頁65001覆蓋)。
'std :: string'是編碼不可知的。它並不關心你放入它的字節的編碼。因此,它比「文本字符串」更好地描述爲「字節串」。所以聲稱「默認情況下,我的機器中的std :: string是GBK」是沒有意義的。當你從某個地方得到一個字符串時,那個地方也必須告訴你它使用了哪種編碼。你不能從字符串的內容中可靠地猜出這個。 –