QT下面的中文亂碼問題

2021-07-10 08:27:05 字數 2925 閱讀 7567

字元編碼問題詳解:  

使用unicode字符集:

int t1=sizeof(tchar);  2

int t2=sizeof(char); 1

使用多位元組字符集:

int t1=sizeof(tchar);  1

int t2=sizeof(char); 1

未設定:

int t1=sizeof(tchar);  1

int t2=sizeof(char); 1

從父級或專案預設設定繼承:

int t1=sizeof(tchar);  1

int t2=sizeof(char); 1

以 createfile 為例 不同的字符集設定,要使用不同的函式 : 不同函式處理方式不一樣 有些是這樣,有些不是這樣

#ifdef unicode  // 相等於 設定中勾選 使用unicode字符集:

#define createfile  createfilew

#else

#define createfile  createfilea

#endif // !unicode

createfilew(

__in     lpcwstr lpfilename,

__in     dword dwdesiredaccess,

__in     dword dwsharemode,

__in_opt lpsecurity_attributes lpsecurityattributes,

__in     dword dwcreationdisposition,

__in     dword dwflagsandattributes,

__in_opt handle htemplatefile

);createfilea(

__in     lpcstr lpfilename,

__in     dword dwdesiredaccess,

__in     dword dwsharemode,

__in_opt lpsecurity_attributes lpsecurityattributes,

__in     dword dwcreationdisposition,

__in     dword dwflagsandattributes,

__in_opt handle htemplatefile

);比較 createfilew createfilea 發現 第乙個引數 lpfilename, 的型別不一樣,lpcwstr  lpcstr  可見編碼格式對它的影響。

參考 也可以對介面上的進行翻譯 ,同樣的原理 介面上有乙個屬性,可翻譯的,就表示這個意思 (tr)

下面是另外一

langswitch.h:

#ifndef langswitch_h

#define langswitch_h

#include #include #include class langswitch : public qwidget

;#endif // mainwindow_h

langswitch.cpp:
#include "langswitch.h"

qwidget(parent)

langswitch::~langswitch()

void langswitch::changelang(int indexx)

void langswitch::createscreen()

void langswitch::changetr(const qstring &langcode)

translatort=new qtranslator;

qstring qmfilename="lang_"+langcode;

qstring ss=qdir::currentpath();//e:\delcode\build-untitled-desktop_qt_5_5_1_msvc2010_32bit_qt_55_w-debug

//if(translatort->load(qstring("../")+qmfilename))

if(translatort->load(qmfilename))//詳見load的說明,首先載入 的是ss中的 .qm 檔案 所以要更新,還要發布 其實所有的qm檔案是同乙份,會對應不同的資料 取值

}void langswitch::refreshlabel()

有些**中是不基於qobject 的,下面是**中的解決方案,以及圖:

class xx

;int main(int argc, char *argv)

return a.exec();

}

圖:

先看圖: 

qt 中文亂碼 Qt中文亂碼問題

接觸了qt,由於習慣中vs,如果使用vs寫qt 剛接觸很快就發現有中文亂碼問題,我的解決方法如下 新建乙個標頭檔案,比如qtchcharset.h,標頭檔案中內容如下 pragma once ifdef q os win q os win 新增後支援gb2312,utf 8 bom,unicode ...

亂碼問題 Qt中文亂碼問題

接觸了qt,由於習慣中vs,如果使用vs寫qt 剛接觸很快就發現有中文亂碼問題,我的解決方法如下 新建乙個標頭檔案,比如qtchcharset.h,標頭檔案中內容如下 pragma once ifdef q os win q os win 新增後支援gb2312,utf 8 bom,unicode ...

QT 中文亂碼問題

1,將設定改為 如果是utf 8編碼,則新增 2,cpp檔案開始新增 pragma execution character set utf 8 根據 qt 的文件 中規定 qstring 的 const char 建構函式是呼叫 fromutf8 構造的。所以要求字串字面量是 utf 8 編碼的位元...