Qt源程式 在 linux 與 windows 下因原始檔編碼問題導致中文亂碼
當Qt編輯器使用系統編碼的預設設定時
在windows 下,源程式中如果不包含中文,原始檔使用的是ASCII編碼,否則是GBK編碼。在Linux下,源程式是是用UTF-8編碼的。
對於原始檔中一個像“abc”這樣的C語言字串是不包含編碼型別資訊的,而Qt中QString是以Unitcode來儲存字串的。所以在對QString 物件進行初始化時QString 如果不知道編碼方式就很可能出現亂碼。
解決辦法是在main中設定好編碼方式。
windows :
QTextCodec *codec = QTextCodec::codecForName("GBK"); QTextCodec::setCodecForLocale(codec); QTextCodec::setCodecForCStrings(codec); QTextCodec::setCodecForTr(codec);
Linux:
QTextCodec *codec = QTextCodec::codecForName("UTF-8");
QTextCodec::setCodecForLocale(codec);
QTextCodec::setCodecForCStrings(codec);
QTextCodec::setCodecForTr(codec);
值得注意的是,所有QString的賦值在時間上都必是在上述程式碼之後。這意味著不可以為全域性的const QString賦值,全域性的QString也不能在定義時初始化。
如果你是在Windows中進行程式設計,當你把檔案複製到Linux時,中文會出現亂碼,Qt Creater會提示你在當前編碼下無法編輯(如果沒有提示,可能是Qt的版本太低),並有一個讓你重新選擇編碼的按鈕。這時選擇GBK的方式開啟檔案,把文字複製出來,貼上到一個新建的文字檔案上,另存為UTF-8編碼就可以正常顯示了。
記得在main中把編碼改成
QTextCodec *codec = QTextCodec::codecForName("UTF-8");
相關推薦
Qt源程式 在 linux 與 windows 下因原始檔編碼問題導致中文亂碼
當Qt編輯器使用系統編碼的預設設定時 在windows 下,源程式中如果不包含中文,原始檔使用的是ASCII編碼,否則是GBK編碼。在Linux下,源程式是是用UTF-8編碼的。對於原始檔中一個像“abc”這樣的C語言字串是不包含編碼型別資訊的,而Qt中QString是以
Linux與Windows下的網路程式設計區別
轉載:https://www.cnblogs.com/gildoringlorin/p/3951317.html socket相關程式從Windows移植到Linux下需要注意的: 1)標頭檔案 Windows下winsock.h/winsock2.h Linux下
Linux與Windows下txt檔案區別
一、區別 換行符: 1.windows中的換行符是\r\n, 2. linux/unix下的換行符是\n。 其中: 回車符:\r=0x0d (13) return; #回車(carriage return) 換行符:\n=0x0a (10) newline。#換行(newline) 二
Linux與windows下長路徑名
BTRFS 255 bytes exFAT 255 UTF-16 characters ext2 255 bytes ext3 255 bytes ext3cow 255 bytes ext4 255 bytes FAT32 8.3 (255 UCS-2 code un
JAVA下DES加解密在linux與windows下的相容問題(從ITEYE搬家過來的)
前段時間做了DES加密解密,採用的是javax下的DES演算法,在windows下寫的倒挺快,現在部署到linux上測試的時候,組長一臉嚴肅的找到我,聲色俱厲地問我為毛測試資料都不能解密了!你寫的什麼JB毛演算法!馬上就要測試了!你給我搞神馬! 天地良心,我測的很棒的,還拉出來那個小
關於windows下安裝mysql資料庫出現中文亂碼的問題
[WinMySQLAdmin] Server=E:/mysql/mysql-5.6.41-winx64/bin/mysqld-opt.exe user=root [mysql] default-character-set=utf8 [mysqld] lower_case_table_names=2 bas
vscode基於Linux和Windows下c/c++的多文件編譯與連接
vscode c/c++ 有時寫寫小程序,又不想啟動2013,vscode就成了我的首選。剛接觸vscode的時候,跟著網上配置了一堆東西,總算能編譯C/C++了,但一涉及到多文件,我還得乖乖的打開vs2013。前些天在配置Linux上的vscode的時候,突然發現有網友在tasks.json
linux路徑分隔符'/'與windows下的分隔符'\',以及java項目,web項目讀取項目的路徑
oid ont resource light ros ren -i microsoft 配置文件 1, linux下的文件分隔符是‘/‘, windows下的文件分隔符為‘\‘。但是‘\‘這個符號是轉義符。如果需要在console輸出‘\‘這個符號的,你需要輸入‘\\‘。另
在Ubuntu16.04下搭建samba,實現linux與windows之間的資源共享
轉載於http://www.linuxdiyf.com/linux/24260.html 1、開始需要我們做的是先在我們的ubuntu下安裝好samba: 安裝samba:sudo apt-get install samba 安裝smbclient:sudo
Linux和Windows下的sleep與usleep與usleep的區別
一、sleep (1)標頭檔案 在windows下標頭檔案:#include<windows.h> 在Linux下的標頭檔案:#include<unistd.h> //unistd.h是Linux系統程式設計中最重要的檔案,包含了作業系統為程
Redis在Linux和Windows下的安裝與配置
一、Linux下安裝 # 下載 > wget http://download.redis.io/releases/redis-3.2.9.tar.gz # 解壓 > tar zxf r
linux下與windows下的換行符
回車符號和換行符號產生背景 關於“回車”(carriage return)和“換行”(line feed)這兩個概念的來歷和區別。在計算機還沒有出現之前,有一種叫做電傳打字機(Teletype Model 33)的玩意,每秒鐘可以打10個字元。但是它有一個問題,就是打完一
windows與虛擬機的linux共享windows下的一個文件夾
x86 star tools 8.0 pbm -h elk error: distrib 1、重新安裝VMware Tools,在VMware面板上選擇“虛擬機-重新安裝VMware tools…” 2、使用命令 Ctrl+Alt+T
linux和windows下安裝python拓展包及requirement.txt安裝類庫
too tor == 引導 -cp mod flask utf addition http://blog.csdn.net/pipisorry/article/details/39902327python拓展包安裝直接安裝拓展包默認路徑:Unix(Linux)默認路徑:/
在Linux與Windows上獲取當前堆棧信息
flow ces mod exe mode return 開發 執行 too 在編寫穩定可靠的軟件服務時經常用到輸出堆棧信息,以便用戶/開發者獲取準確的運行信息。常用在日誌輸出,錯誤報告,異常檢測。 在Linux有比較簡便的函數獲取堆棧信息: #include <s
mysql數據庫在Linux和windows下免安裝實現以及框架開發碰到的問題
自動啟動 過程 root mil 是否 call 啟動頁 同時 ice 2017年7月23號下午5:20分,上周我根據自己的實際情況,總結了mysql數據庫在windows系統下和linux系統下免安裝版本的實現,以及在項目開發中遇到的數據庫報錯,今天整理出來,以供日後學習
[數據同步] Linux與Windows進行數據同步
linux windows 數據同步 實驗環境 服務端:Linux Centos 6.8 (10.208.131.198)客戶端:windows 2008 (10.208.131.199) 服務端一、安裝rsync服務 設置開機自啟動 # yum install xinetd rsync -y #
Linux入門之Linux與Windows常見對比
window linux與 簡要概述 目前使用最多的操作系統就是Windows和Linux,而Microsoft Windows操作系統占據了廣大使用者市場的大半江山,Windows如此受廣大用戶的青睞,那還有必要學習Linux操作系統嗎?既然Linux沒有被Windows擠出市場,那足以說明
linux和windows下TIME_WAIT過多的解決辦法
iss abs apach cti ack tps als improve increase http://www.51testing.com/html/48/202848-249774.html linux和windows下TIME_WAIT過多的解決辦法 http:
Linux與Windows
hive one 正版 hang cto tail 文件創建 配置 發展 經過一周與Linux的接觸,學習了Linux的誕生,發展與現狀;也逐漸學習了越來越多的Linux的基本原理,指令與操作。算是對Linux有了一個基本的了解。與此同時,不禁在心裏和目前正在使用的wido