C_and_CPP 板


LINE

开发平台(Platform): (Ex: Win10, Linux, ...) win7 64bit 编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出) qt 5.8.0 mingw 32bit xmapp 7.1.1 Apache/2.4.25 (Win32) OpenSSL/1.0.2j PHP/7.1.1 MariaDB 伺服器字元集: UTF-8 Unicode (utf8) 额外使用到的函数库(Library Used): (Ex: OpenGL, ...) 问题(Question): 在phpMyadmin里面中文显示正常,栏位和资料库的编码都有设定为utf8_unicode_ci qt5 之後的预设应该都是utf-8编码了,照理说应该不会有中文乱码问题 但是query出来後的中文资料全部都乱码 喂入的资料(Input): 预期的正确结果(Expected Output): Opened 工址 构造 Closing... 错误结果(Wrong Output): Opened "撌亘" "瑽\uF561\u0080" Closing... 程式码(Code):(请善用置底文网页, 记得排版) QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); db.setHostName("localhost"); db.setUserName("admin"); db.setPassword("0000"); db.setDatabaseName("test"); if(db.open()) { qDebug()<<"Opened"; QSqlQuery qry; if(qry.exec("SELECT `Col_Name` FROM `column_table` WHERE `Category_ID`=01 AND `Authority`=0")) { while(qry.next()) { qDebug()<< qry.value(0).toString().trimmed(); } } else { qDebug()<<"error: "<<qry.lastError().text(); } qDebug()<<"Closing..."; db.close(); } else { qDebug()<<"error: "<<db.lastError().text(); } 补充说明(Supplement): 有试过在前面加上 QTextCodec *codec = QTextCodec::codecForName("UTF-8"); QTextCodec::setCodecForLocale(codec); 但是出来的内容一样是乱码 Opened "撌亘?" "瑽鹉耿 Closing... 有测试过用sqlite3 资料库内容一样为中文 用qdebug输出显示是正常的中文 不知道到底哪个环节设定错误… 卡关好久 orz 有没有人知道怎麽解? 补充 直接用qDebug()<< qry.value(0).toByteArray(); 显示输出 Opened "\xE6\x92\x8C\xE4\xBA\x99" "\xE7\x91\xBD\xEF\x95\xA1\xC2\x80" Closing... 若加上 QTextCodec *codec = QTextCodec::codecForName("UTF-8"); QTextCodec::setCodecForLocale(codec); 显示输出变成 Opened "\xE5\xB7\xA5\xE5\x9D\x80" "\xE6\xA7\x8B\xE9\x80\xA0" Closing... --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 36.233.182.226
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1488387465.A.1A4.html
1F:→ uranusjr: 要不要试着把你拿到的 bytes 直接印出来?这超难除错的 03/02 01:38
2F:→ ppi3106: 用bytearray 方式印出来吗? 03/02 01:39
3F:→ uranusjr: 之类的, 反正就是绕过 encoding 直接看 binary 03/02 01:43
※ 编辑: ppi3106 (36.233.182.226), 03/02/2017 01:53:11
4F:→ ppi3106: 已补充 03/02 01:53
5F:→ ppi3106: 还麻烦帮忙看看,谢谢 03/02 02:24
6F:→ uranusjr: Hmm, 资料看起来是 UTF-8 没错, 所以问题在 Qt 转字串时 03/02 02:57
7F:→ uranusjr: 用的编码是错的; 嘛简单的解就是你手动 decode 就好... 03/02 02:57
但是因为用qry.value抓下来的时候,他function就预设是QString了 设了codec之後,直接印qry.value(0)显示的会是如下 Opened QVariant(QString, "撌亘?") QVariant(QString, "瑽鹉耿) Closing... 所以其实怀疑是不是mysql的设置上哪里出错,但是编码又都设为utf8了…
8F:→ uranusjr: (我说的是你有设 codec 的状况) 03/02 02:59
9F:→ uranusjr: 问一下, 你是在程式的哪个阶段设 codec? 03/02 03:00
10F:推 longlongint: 来个截图呀 cmd要换code page 03/02 08:02
11F:→ ppi3106: 在main一开始进去的时候就设codec了?还是应该设在别处? 03/02 11:56
12F:→ ppi3106: 回long大,请问是要哪个画面的截图,用console输出是测试 03/02 11:57
13F:→ ppi3106: 主要还是要丢到tableview里面,因为会遇到一样的乱码问题 03/02 11:58
※ 编辑: ppi3106 (36.233.182.226), 03/02/2017 12:03:39
14F:推 RishYang: QString一个字是16bits 03/23 20:23
15F:→ RishYang: 然而Qt的判段多位元组序列有问题,首位元组的最高位为11 03/23 20:47
16F:→ RishYang: 10是三位元组序列 03/23 20:47
17F:→ RishYang: 可以试试把正确的QByteArray用QString::fromUtf8()转成Q 03/23 20:55
18F:→ RishYang: String看看会不会正确 03/23 20:55
19F:→ RishYang: 刚刚搞错了一些,Qt没问题,而你已经写对了,只要把正确 03/23 21:31
20F:→ RishYang: 的QByteArray转回QString即可 03/23 21:31







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Tech_Job站内搜寻

TOP