筆者經歷了糟心的兩天時間,說多了都是淚,希大家有所幫助,不再同乙個地方浪費時間。
筆者的任務:從資料庫獲取utf-8編碼的含中文的字串,並在linux平台使用qt顯示在**中。
筆者所遇問題:中文始終為亂碼,度娘上mian函式加類似下面的函式也並沒用
qtextcodec *codec = qtextcodec::codecforname(「gbk」);
qtextcodec::setcodecfortr(codec);
qtextcodec::setcodecforlocale(codec);
qtextcodec::setcodecforcstrings(codec);
或者是呼叫qt提供的方法編寫幾個轉換函式,邏輯大概是:utf->unicode->gbk,類似下面的函式:
inline qstring gbk2utf8(const qstring &instr)
inline qstring utf82gbk(const std::string &instr)
{qstring str = qstring::fromstdstring(instr);
return utf82gbk(str);
嘗試個各種方法後,我有了自己編寫轉碼函式的意圖,然後查了下gbk編碼和utf-8編碼的規則,準備自己敲╮(╯﹏╰)╭。
當然我還是現在度娘上看了看有沒有大佬已經幹過這個事兒,果不其然被我找到了,哈哈( ̄▽ ̄)~*。
大家可以閱讀這篇文章,這位大佬還提供了源**,真是太棒了,記得為大佬點讚喲!
轉換出來是的gbk字串是std::string型別的,qt顯示需要qstring型別,然後使用qstring::fromstdstring(stdstr),結果還是亂碼,勒個去o(╥﹏╥)o,頭髮都快抓掉完了,還是亂碼。
不過不要擔心,是有std::cout列印stdstr時發現終端上已經是正常的中文了,意味著確實轉成gbk格式了,最後只需要呼叫
qstring::fromlocal8bit(stdstr.data()),即可在qt上顯示正常的中文了,至此一切問題終於解決了。
PHP中文GBK編碼轉UTF 8
iconv 和 mb convert encoding的區別 string mb convert encoding string str,string to encoding mixed from encoding 需要先enable mbstring 擴充套件庫,在 php.ini裡將 exten...
C語言漢字gbk轉utf 8
一 注意事項 1.請注意漢字內碼 對應字元為 xcc等 和列印出的轉義字元 xcc 的區別!該問題導致我們程式除錯了差不多一整天!見 c語言中轉義字元的使用 2.另外庫函式iconv會把傳入的引數指標移位,這是正常的 請不要認為是自己程式有問題。3.我的終端是utf 8格式,對於其他編碼不能顯示。二...
上傳檔案亂碼,GBK轉UTF 8
最近遇到這樣乙個問題,我上傳檔案沒有轉換字符集windows預設gbk,結果當我需要讀檔案顯示時用utf 8轉當然會出現亂碼,為了解決這個問題,我就將上傳時檔案一同也轉成utf 8了這樣就不會亂碼了,上傳時轉換字符集方法如下 string root filepath 上傳路徑 file rootfi...