1. Qtsql編程RedHat linux系統下oracle資料庫中文亂碼
首先確認你的NLS_LANG環境變數是AMERICAN_AMERICA.US7ASCII,拼寫無誤
統一編碼設置:
統一GBK編碼(gbk或gb18030)
QTextCodec*gbkTC=QTextCodec::codecForName("gbk");
QTextCodec::setCodecForTr(gbkTC);
QTextCodec::setCodecForLocale(gbkTC);
QTextCodec::setCodecForCStrings(gbkTC);
統一UTF8編碼(utf-8或utf8)
QTextCodec*utg8TC=QTextCodec::codecForName("utf-8");
QTextCodec::setCodecForTr(utg8TC);
QTextCodec::setCodecForLocale(utg8TC);
QTextCodec::setCodecForCStrings(utg8TC);編碼轉換/前提也是要設置默認編碼,然後針對來源字元串的編碼進行轉換,例如:
QTextCodec*gbkTC=QTextCodec::codecForName("gb18030");
QTextCodec*utg8TC=QTextCodec::codecForName("utf-8");
QTextCodec::setCodecForTr(gbkTC);
QTextCodec::setCodecForLocale(gbkTC);
QTextCodec::setCodecForCStrings(gbkTC);
1.UTF-8轉換GBK
QStringUTF2GBK(QStringutfStr)
{
returngbkTC->toUnicode(utfStr.toLocal8Bit());
}
2GBK轉換UTF-8
QStringGBK2UTF(QStringgbkStr)
{
returnutg8TC->toUnicode(gbkStr.toUtf8());
}
2. 資料庫亂碼怎麼解決
展開快訊
登錄
首頁
專欄
問答
沙龍
快訊
團隊主頁
開發者手冊
智能鈦AI
在線學習中心
TVP
返回騰訊雲官網
徹底解決MySQL中文亂碼
mysql是我們項目中非常常用的數據型資料庫。但是因為我們需要在資料庫保存中文字元,所以經常遇到資料庫亂碼情況。下面就來介紹一下如何徹底解決資料庫中文亂碼情況。
1、中文亂碼
1.1、中文亂碼
無法插入中文字元:
1.2、查看錶字元編碼
我們可以看到表的默認字元集是latin1.
所以我們在創建表的時候就需要指定表的字元集:
這樣在Linux裡面可以訪問並且可以插入與訪問這個表了。
1.3、資料庫與操作系統編碼
雖然在伺服器端可以顯示中文正常,但是在客戶端可能會顯示亂碼。因為我們的伺服器是UTF8。
而且資料庫的編碼也存在問題。
這里我們可以看character_sert_database與character_set_server的字元集都是latin1.那麼在mysql資料庫中,server,database,table的字元集都默認是latin1.下面我們就來看看如何解決mysql亂碼情況。
2、mysql設置變數的范圍
2.1、session范圍
查看資料庫編碼:
修改字元編碼:
我們可以看到字元集已經修改成都是utf8了。但是這里有一個問題,那就是我們重新打開一個命令窗口然後查看數據編碼就會出現下面的畫面:
3. navicat for mysql運行sql文件出錯,怎麼辦
在navicat for mysql中選擇連接伺服器的資料庫,右鍵選擇數據傳輸.
在連接伺服器中的資料庫上新建備份,從備份中導出.sql,再導入到本地資料庫中。
找到原因,原來是MySQL導入大批量數據的時候超出了默認允許最大的數據包,所以就提示MySQL server has gone away。
找到my.cnf,在[mysqld]加入:max_allowed_packet=300M。(意思是最大允許數據包300M)
重啟服務即可。
如果沒能解決問題,那就是默認字元集設置與資料庫設置的不一致。
Windows中修改用戶連接字元編碼格式:C:Program FilesMySQLMySQL Server 5.1my.ini文件中修改default-character-set=utf8。
Linux中修改用戶連接字元編碼格式:修改my.cnf(目錄在/etc/my.cnf),在[client]增加如下代碼 default-character-set = utf8 。
修改完成,重啟服務。