cari
Rumahpangkalan datatutorial mysqlLinux与Windows下QT中使用MySQL中文乱码解决方法

这种方法应该是最快捷解决中文乱码的办法了,不用改mysql的编码,仅限于linux下使用:1.在QT程序的main.cpp的main函数中QTextCode

Linux下

这种方法应该是最快捷解决中文乱码的办法了,不用改mysql的编码,仅限于linux下使用:

1.在QT程序的main.cpp的main函数中QTextCodec```那三句:

2.在你的程序代码设置数据库后添加一句:  db.exec("SET NAMES 'Latin1'"); //直接使用数据库的latin1编码

以上两步就解决问题了。

Windows下

此方法修改后可以在QT中正常显示中文,也可以通过QT往MYSQL中插入中文并在QT的控件上显示出来。   但通过命令行查看表的内容时,中文直接显示为?。 所以这个办法做了之后就不能在命令行下查看mysql中文内容。

第一步把数据库的编码全部改了很重要!!

在Qt4中使用MySQL4.1及其以上版本中的中文问题解决方法

MySQL4.1及其以上版本中中文问题比较麻烦,有时候在QT中使用会出现问号或者乱码,现在说明一下在Qt中如何正确地配合使用。

先在MySQL中建表,使用中文,一般情况下就两种,GB(GB2312或者GBK)或者UTF8两种。两种的解决方法是相似的,这里我们以GBK为例说明。

一、数据库和表以及表里的字符相关字段(varchar, char, text等)都要使用gbk_chinese_ci这种方式,不这样做也可以,但这样做,会省很多麻烦( 设置方法参考《MySQL统一编码》:)。


二、重新编译Qt的MySQL驱动,需要修改src/sql/drivers/mysql/qsql_mysql.cpp文件。
要修改的部分如下:第一百零八行的codec函数,注意红色加粗部分,是我修改增加的语句。

Quote:

static QTextCodec* codec(MYSQL* mysql)
{
return QTextCodec::codecForName("GBK");
#if MYSQL_VERSION_ID >= 32321
QTextCodec* heuristicCodec = QTextCodec::codecForName(mysql_character_set_name(mysql));
if (heuristicCodec)
return heuristicCodec;
#endif
return QTextCodec::codecForLocale();
}

 

然后,重新编译qt的mysql驱动,这里就不多说了,请查看Qt相关文档
三、在Qt程序main函数中app后面开头处加入下面两句,加上这两个是省得不必要的麻烦。

Quote:

QTextCodec::setCodecForLocale(QTextCodec::codecForName("GBK"));
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GBK"));
//QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK"));


四、在Qt数据库连接后,运行SET NAMES 'GBK'语句(红色部分)。

Quote:

db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("localhost");
db.setDatabaseName("yourdatabase");
db.setUserName("yourusername");
db.setPassword("yourpassword");
db.open();
db.exec("SET NAMES 'GBK'");


OK, 走过上面四步以后,我们就可以在程序中正确使用查看MySQL中的中文数据了。
但是如果你要直接通过SQL语句修改数据,则需要正确的把输入的内容转变为GB码中,,
比如:

Quote:

QTextCodec *codec = QTextCodec::codecForName("GBK");
QString strOut = codec->fromUnicode(lineEdit->text()).data();
QString strSql = "UPDATE user SET uinfo = '" + strOut + "'";
db.exec(strSql);


这里需要注意的是,如果设置了codecForTr也为GBK的话,那就不用上面的手动转换步骤了,即,如果在第三步中把第三行的注释去掉,则上面的字符串格式转换就不需要了。

这里面最关键的一点就是修改qsql_mysql.cpp文件,因为它不能正确的设置codec内码。

如果数据库中的编码使用的是UTF8,则把上面相关的部分改为UTF-8(Qt)或者UTF8(MySQL)就行了。

linux

Kenyataan
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Terangkan sifat asid (atom, konsistensi, pengasingan, ketahanan).Terangkan sifat asid (atom, konsistensi, pengasingan, ketahanan).Apr 16, 2025 am 12:20 AM

Atribut asid termasuk atom, konsistensi, pengasingan dan ketahanan, dan merupakan asas reka bentuk pangkalan data. 1. Atomicity memastikan bahawa urus niaga sama ada berjaya atau gagal sepenuhnya. 2. Konsistensi memastikan pangkalan data tetap konsisten sebelum dan selepas transaksi. 3. Pengasingan memastikan bahawa urus niaga tidak mengganggu satu sama lain. 4. Kegigihan memastikan data disimpan secara kekal selepas penyerahan transaksi.

MySQL: Sistem Pengurusan Pangkalan Data vs Bahasa PengaturcaraanMySQL: Sistem Pengurusan Pangkalan Data vs Bahasa PengaturcaraanApr 16, 2025 am 12:19 AM

MySQL bukan sahaja sistem pengurusan pangkalan data (DBMS) tetapi juga berkait rapat dengan bahasa pengaturcaraan. 1) Sebagai DBMS, MySQL digunakan untuk menyimpan, menyusun dan mengambil data, dan mengoptimumkan indeks dapat meningkatkan prestasi pertanyaan. 2) Menggabungkan SQL dengan bahasa pengaturcaraan, tertanam dalam Python, menggunakan alat ORM seperti SQLalChemy dapat memudahkan operasi. 3) Pengoptimuman prestasi termasuk pengindeksan, pertanyaan, caching, perpustakaan dan bahagian meja dan pengurusan transaksi.

MySQL: Menguruskan data dengan arahan SQLMySQL: Menguruskan data dengan arahan SQLApr 16, 2025 am 12:19 AM

MySQL menggunakan arahan SQL untuk menguruskan data. 1. Perintah asas termasuk pilih, masukkan, kemas kini dan padam. 2. Penggunaan lanjutan melibatkan fungsi gabungan, subquery dan agregat. 3. Kesilapan umum termasuk isu sintaks, logik dan prestasi. 4. Petua Pengoptimuman termasuk menggunakan indeks, mengelakkan Pilih* dan menggunakan had.

Tujuan Mysql: Menyimpan dan Menguruskan Data dengan berkesanTujuan Mysql: Menyimpan dan Menguruskan Data dengan berkesanApr 16, 2025 am 12:16 AM

MySQL adalah sistem pengurusan pangkalan data relasi yang sesuai untuk menyimpan dan menguruskan data. Kelebihannya termasuk pertanyaan berprestasi tinggi, pemprosesan transaksi fleksibel dan jenis data yang kaya. Dalam aplikasi praktikal, MySQL sering digunakan dalam platform e-dagang, rangkaian sosial dan sistem pengurusan kandungan, tetapi perhatian harus dibayar kepada pengoptimuman prestasi, keselamatan data dan skalabilitas.

SQL dan MySQL: Memahami hubunganSQL dan MySQL: Memahami hubunganApr 16, 2025 am 12:14 AM

Hubungan antara SQL dan MySQL adalah hubungan antara bahasa standard dan pelaksanaan khusus. 1. SQL adalah bahasa standard yang digunakan untuk mengurus dan mengendalikan pangkalan data relasi, membolehkan penambahan data, penghapusan, pengubahsuaian dan pertanyaan. 2.MYSQL adalah sistem pengurusan pangkalan data tertentu yang menggunakan SQL sebagai bahasa pengendaliannya dan menyediakan penyimpanan dan pengurusan data yang cekap.

Terangkan peranan log redo innoDB dan membatalkan log.Terangkan peranan log redo innoDB dan membatalkan log.Apr 15, 2025 am 12:16 AM

InnoDB menggunakan redolog dan undologs untuk memastikan konsistensi dan kebolehpercayaan data. 1. Pengubahsuaian halaman data rekod untuk memastikan pemulihan kemalangan dan kegigihan transaksi. 2.UNDOLOGS merekodkan nilai data asal dan menyokong penggantian transaksi dan MVCC.

Apakah metrik utama untuk dicari dalam output yang dijelaskan (jenis, kunci, baris, tambahan)?Apakah metrik utama untuk dicari dalam output yang dijelaskan (jenis, kunci, baris, tambahan)?Apr 15, 2025 am 12:15 AM

Metrik utama untuk menjelaskan arahan termasuk jenis, kunci, baris, dan tambahan. 1) Jenis mencerminkan jenis akses pertanyaan. Semakin tinggi nilai, semakin tinggi kecekapan, seperti const adalah lebih baik daripada semua. 2) Kunci memaparkan indeks yang digunakan, dan null menunjukkan tiada indeks. 3) Baris menganggarkan bilangan baris yang diimbas, yang mempengaruhi prestasi pertanyaan. 4) Tambahan memberikan maklumat tambahan, seperti menggunakanFilesort meminta bahawa ia perlu dioptimumkan.

Apakah status sementara dalam menjelaskan dan bagaimana untuk mengelakkannya?Apakah status sementara dalam menjelaskan dan bagaimana untuk mengelakkannya?Apr 15, 2025 am 12:14 AM

MenggunakanTemary menunjukkan bahawa keperluan untuk membuat jadual sementara dalam pertanyaan MySQL, yang biasanya dijumpai di Orderby menggunakan lajur yang berbeza, GroupBy, atau tidak diindeks. Anda boleh mengelakkan berlakunya indeks dan menulis semula pertanyaan dan meningkatkan prestasi pertanyaan. Khususnya, apabila menggunakan pembelian muncul dalam menjelaskan output, ini bermakna MySQL perlu membuat jadual sementara untuk mengendalikan pertanyaan. Ini biasanya berlaku apabila: 1) deduplikasi atau pengelompokan apabila menggunakan yang berbeza atau kumpulan; 2) Susun apabila Orderby mengandungi lajur bukan indeks; 3) Gunakan subquery kompleks atau menyertai operasi. Kaedah Pengoptimuman termasuk: 1) Orderby dan GroupB

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
4 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
4 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Arahan sembang dan cara menggunakannya
4 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌

Alat panas

DVWA

DVWA

Damn Vulnerable Web App (DVWA) ialah aplikasi web PHP/MySQL yang sangat terdedah. Matlamat utamanya adalah untuk menjadi bantuan bagi profesional keselamatan untuk menguji kemahiran dan alatan mereka dalam persekitaran undang-undang, untuk membantu pembangun web lebih memahami proses mengamankan aplikasi web, dan untuk membantu guru/pelajar mengajar/belajar dalam persekitaran bilik darjah Aplikasi web keselamatan. Matlamat DVWA adalah untuk mempraktikkan beberapa kelemahan web yang paling biasa melalui antara muka yang mudah dan mudah, dengan pelbagai tahap kesukaran. Sila ambil perhatian bahawa perisian ini

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

MantisBT

MantisBT

Mantis ialah alat pengesan kecacatan berasaskan web yang mudah digunakan yang direka untuk membantu dalam pengesanan kecacatan produk. Ia memerlukan PHP, MySQL dan pelayan web. Lihat perkhidmatan demo dan pengehosan kami.

SublimeText3 versi Inggeris

SublimeText3 versi Inggeris

Disyorkan: Versi Win, menyokong gesaan kod!

mPDF

mPDF

mPDF ialah perpustakaan PHP yang boleh menjana fail PDF daripada HTML yang dikodkan UTF-8. Pengarang asal, Ian Back, menulis mPDF untuk mengeluarkan fail PDF "dengan cepat" dari tapak webnya dan mengendalikan bahasa yang berbeza. Ia lebih perlahan dan menghasilkan fail yang lebih besar apabila menggunakan fon Unicode daripada skrip asal seperti HTML2FPDF, tetapi menyokong gaya CSS dsb. dan mempunyai banyak peningkatan. Menyokong hampir semua bahasa, termasuk RTL (Arab dan Ibrani) dan CJK (Cina, Jepun dan Korea). Menyokong elemen peringkat blok bersarang (seperti P, DIV),