不知道標題描述的好不好。
MFC界面有一CStatic控制元件
為了使用方便 關聯了一個value型變數
CString m_text;
此專案使用了libcurl json等第三方庫 這些庫的輸出是ansi字串(char*型 或string)
所以就涉及了寬窄位元組轉換問題
以下幾種方法哪種比較自然
1.擴展第三方庫,使庫回傳wchar 然后直接賦值給m_text
2.在賦值處轉換 m_text = CA2W(xxx)
3.不使用關聯變數,改為使用SetDlgItemTextA(),這樣無需轉換
4.我沒想到的其他方法
uj5u.com熱心網友回復:
“”使用SetDlgItemTextA()“” 吧uj5u.com熱心網友回復:
2.在賦值處轉換 m_text = CA2W(xxx)uj5u.com熱心網友回復:
CA2W(xxx)你用SetDlgItemTextA(),這個接受窄字串,但這個窄字串是什么編碼?直接給CStatic,能正常顯示出來,不會出亂碼?
uj5u.com熱心網友回復:
窄字符就是ansi編碼
uj5u.com熱心網友回復:
在底層使用ascii,在上層使用unicode,
中間層做轉換
uj5u.com熱心網友回復:
窄字符也可以是utf-8等,linux下默認就是這個。
windows下,也可以用setlocale改成utf-8。
如果你是用libcurl獲取網頁資訊,那么你先要查看charset部分,看看是什么編碼,然后再將libcurl給你的raw資料轉成你能在界面上正常顯示的編碼。
uj5u.com熱心網友回復:
CA2W(xxx)
你用SetDlgItemTextA(),這個接受窄字串,但這個窄字串是什么編碼?直接給CStatic,能正常顯示出來,不會出亂碼?
窄字符就是ansi編碼
窄字符也可以是utf-8等,linux下默認就是這個。
windows下,也可以用setlocale改成utf-8。
如果你是用libcurl獲取網頁資訊,那么你先要查看charset部分,看看是什么編碼,然后再將libcurl給你的raw資料轉成你能在界面上正常顯示的編碼。
是的 這部分我是轉換成gb2312了
uj5u.com熱心網友回復:
MultiByteToWideChar轉成Unicodeuj5u.com熱心網友回復:
自己在介面的地方做編碼,解碼等轉換來適配程式和第三方庫轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/122915.html
標籤:基礎類
下一篇:fopen 打開檔案的錯誤
