關於qt中文utf 8轉gbk

2021-09-26 07:22:55 字數 1040 閱讀 1823

筆者經歷了糟心的兩天時間,說多了都是淚,希大家有所幫助,不再同乙個地方浪費時間。

筆者的任務:從資料庫獲取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...