1. 程式人生 > >【ubuntu linux】 QT中使用MYSQL中文亂碼解決方法

【ubuntu linux】 QT中使用MYSQL中文亂碼解決方法

其實這篇文章是整合版,是借鑑網上兩篇文章整合起來的。

先給出兩篇源文章的來源:

第一篇是講mysql資料庫編碼的,而我採用成功的方法是第二篇的。

推薦你先試一下第二篇文章,如果成功了,就不用往下看了。

產生中文亂碼的原因:QT預設的傳送和接受都是UTF-8編碼的,而Mysql 伺服器端傳送和接受都是latin1的,所以就產生了中文亂碼。


下面是解決步驟:

1、確定mysql的編碼沒有改變,之前可能對mysql編碼進行修改過的記得先要改回來。

啟動mysql後,以root登入mysql
[email protected]:~$ mysql -u root  -p
>show variables like 'character%'; #執行編碼顯示
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+

(圖一)

如果character_set_clientcharacter_set_connection character_set_results之前被修改成了utf8,

就要在linux下修改my.cnf檔案其它被修改成utf8好像沒關係),該檔案位置一般是 /etc/mysql/my.cnf

開啟my.cnf後,

找到客戶端配置[client] 在下面新增
default-character-set=latin1 設定預設字符集為latin1
在找到[mysqld] 新增
default-character-set=latin1 預設字符集為latin1
init_connect='SET NAMES latin1' (設定連線mysql資料庫時使用latin1編碼,以讓mysql資料庫為latin1執行)

修改好後,重新啟動mysql 即可,查詢一下show variables like 'character%';是否與 圖一 一樣。

2、在QT程式的main.cpp的main函式中加上下面QTextCodec```那三句:

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QTextCodec *codec = QTextCodec::codecForName("UTF-8");
    QTextCodec::setCodecForCStrings(codec);
    QTextCodec::setCodecForTr(codec);
    MainWindow w;
    w.show();
    return a.exec();
}

然後在你的程式程式碼設定資料庫後新增一句:  db.exec("SET NAMES 'Latin1'"); //直接使用資料庫的latin1編碼

以上兩步就解決問題了。

最後說一點,我是用navicat當mysql的影象管理工具的,我在建立資料庫的時候,資料庫連線、資料庫屬性、資料表屬性都是設定為utf8的,不知道其他的編碼行不行,暫時沒有試過。

相關推薦

ubuntu linux QT使用MYSQL中文亂碼解決方法

其實這篇文章是整合版,是借鑑網上兩篇文章整合起來的。 先給出兩篇源文章的來源: 第一篇是講mysql資料庫編碼的,而我採用成功的方法是第二篇的。 推薦你先試一下第二篇文章,如果成功了,就不用往下看了。 產生中文亂碼的原因:QT預設的傳送和接受都是UTF-8編碼的,而

QT使用MYSQL中文亂碼解決方法(Linux)

1.在QT程式的main.cpp的main函式中QTextCodec```那三句: int main(int argc, char *argv[]) { QApplication a(argc, argv); QTextCodec *codec =

Java Web Servlet 中文亂碼解決方法

Servlet中文亂碼問題解決方法 import java.io.*; import java.net.URLEncoder; import javax.servlet.*; import javax

xshell出現中文亂碼解決方法

        作為一個IT程式設計師,經常需要遠端登入Linux系統的伺服器,使用工具Xshell工具,但是很多時候出現中文問題。根本原因為遠端伺服器Linux系統和本地系統的編碼不一致導致的 。此處的資訊雖然是“總共76”兩個中文漢字,但還是顯示亂碼。一、問題原因:1、遠

javaEE寫入Mysql中文亂碼解決方法

做網站頁面傳值中有中文的時候,可以使用filter來進行中文編碼過濾,可是好不容易在java的控制檯輸出正常了,但插入到Mysql裡,還是亂碼),這種情況多數是連結資料庫時的編碼出了問題 這時:1、

LinuxCentOS7修改中文字符集

CentOS 7中字符集檢視的方式是 locale -a   或者locale  如果想顯示中文的話,應該修改為LANG="zh_CN.UTF-8"在命令列介面臨時修改字符集的話,直接執行 LANG

Linuxmysql中文亂碼

-s mes nec mysqld 表示 tar efault centos client 問題描述:當我們在linux系統上裝載mysql後操作數據庫的時候,會出現中文亂碼問題,比如做插入操作,發現添加到數據庫的數據中文出現論碼,下面就將解決linux下mysql中文亂碼

MySQL數據庫中文亂碼解決方案。

中文亂碼 數據庫MySQL 數據庫中輸入中文容易出現亂碼?(亂碼問題本源:參見http://blog.51cto.com/12042068/2115021)解決方法:1.在建表建庫的時候就指定默認編碼 utf8. CREATE TABLE table_name (

request.getParameter(“引數名”) 中文亂碼解決方法新手設定問題JSP-表單傳值問題:為什麼設定UTF-8之後還是亂碼

request.getParameter(“引數名”) 中文亂碼解決方法【新手設定問題】【JSP】-表單傳值問題:為什麼設定UTF-8之後還是亂碼? 問題:jsp讀取的value值亂碼;設定UTF-8之後還是亂碼…… 備註:本文是轉載的,題目上增加關鍵詞方便查詢

hive文字符亂碼 解決方法

為我 如果 mysql blog res mys shake 如何 color 一.個人初始開發環境的基本情況以及Hive元數據庫說明 ①hive的元數據庫改成了mysql(安裝完mysql之後也沒有進行其它別的設置) ②hive-site.xml中設置元數據庫對應的配

request.getParameter(“引數名”) 中文亂碼解決方法新手設定問題JSP-表單傳值問題

備註:本文是轉載的,題目上增加關鍵詞方便查詢,另外部分文字排版了,方便檢視。(點選檢視源網頁) 原文: 在Java 開發中,如果框架搭建的不完善或者初學者在學習過程中,出現中文亂碼是經常的事兒。(哈。誰讓發明java語言的不是中國人呢) 今天跟大家分享幾個

深度學習RNN梯度消失的解決方案(LSTM)

上個部落格裡闡述了梯度消失的原因,同時梯度消失會造成RNN的長時記憶失效。所以在本部落格中,會闡述梯度消失的解決方案:①梯度裁剪(Clipping Gradient)②LSTM(Long Short-T

工具mac下使用secure CRT時中文亂碼解決方法

mac下使用secure CRT時中文亂碼解決方法 需要兩步解決問題: 1、設定SecureCRT編碼為UTF-8 Options->Global Options->Default Session->Edit Default Settings...-&

springboot使用fastjson中文亂碼解決方法 轉載

以前使用fastjson替換jackson時,沒有直接在頁面列印過json,都是js使用沒有出現亂碼,偶然 打印出來出現了中文亂碼 之前使用的配置方式 @Configuration public class FastJsonConf { @Bean public HttpMessageC

xampp3.2.1mysql中文亂碼問題

可能小夥伴們搜了很多關於解決xampp的mysql中文亂碼的問題,這個問題也困擾我很久了。。 首先網上可能會會讓你找[mysql] [mysqld]改預設編碼格式,結果發現[mysqld]在my.

Qt中文亂碼

首先來理解兩個編碼集: 1.Unicode(統一碼、萬國碼、單一碼、標準萬國碼)是電腦科學領域裡的一項業界標準。它對世界上大部分的文字系統進行了整理、編碼,使得電腦可以用更為簡化地方式來呈現和處理文字。 2.GBK即漢字內碼擴充套件規範,K為漢語拼音 Kuo Zhan(擴

python 爬蟲pythonurl連結編碼處理方法

一、問題描述 有些網址,會把中文編碼成gb2312格式,例如百度知道,美容這一詞,網址上面會編碼成: %C3%C0%C8%DD 那麼如何生成這種編碼呢? 二、解決方法 1、把要編碼的文字enc

windows下eclipse工程轉到linux下原始碼註釋以及輸出字串中文亂碼解決方法

問題出在在windows上面原始碼檔案的編碼方式用cp936,也就是gbk字符集的編碼方式。而linux下預設是utf-8的編碼方式。所以產生了亂碼。 我的解決辦法是: 用vim開啟要轉碼的檔案,在vim中沒有亂碼,必須要無亂碼,如果還有亂碼說明檔案解碼

qt關於中文亂碼的問題

簡單的做法是,在執行程式開始的時候: QTextCodec *codec=QTextCodec::codecForName("UTF-8"); QTextCodec::setCodecForTr(co

mysql中文亂碼解決方式

方式 sqlserver 查看 fadein tin 方案 tab views 編碼 近期項目使用到mysql。卻突然出現了中文亂碼問題。嘗試了多種方案,最終解決亂碼問題,總結一下解決方式,給遇到同樣問題的人一點參考。 中文亂碼的原因 1.安裝m