QTextEdit如何显示汉字?

hitexam 2010-08-24 02:23:57
从mysql数据库返回的是gb2312编码的汉字,通过下面的代码

query.value(2).toString()

赋给了QString类的一个变量A,再通过QTextEdit的setText()赋值

setText(A)

问题如下:

1.为什么QTextEdit显示乱码?如何解决?
2.QT中与QString相关的控件(如QLineEdit、QTextEdit)以及QString自身,他们的值都是以UTF-16存储的?
...全文
1638 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
toproot88 2010-08-30
  • 打赏
  • 举报
回复
QTextCodec类
巴依老爷 2010-08-30
  • 打赏
  • 举报
回复
都知道问题的原因了,解决起来还有什么困难呢
程序从数据库里拿到原始的字符串,看看他是什么格式编码的,再用相应的函数转换成unicode就行了
hitexam 2010-08-30
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 lishaman 的回复:]

显示汉字很简单 啊
QTextEdit *myEdit=new QTextEdit;
myEdit->insertPlainText(trUtf8("你好!"));
[/Quote]
你的答案回答了如何显示汉字,但是问题的根源可能你没看清
lishaman 2010-08-29
  • 打赏
  • 举报
回复
显示汉字很简单 啊
QTextEdit *myEdit=new QTextEdit;
myEdit->insertPlainText(trUtf8("你好!"));
hitexam 2010-08-27
  • 打赏
  • 举报
回复
。。。前些天的代码把 query.exec("set names gb2312") 给注释了。刚刚去掉注释重新编译跑起来后还是乱码,晕厥中...
zqlee1216 2010-08-26
  • 打赏
  • 举报
回复
QTextCodec类可以就解决,去查下该类的用法就行了。
hitexam 2010-08-26
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 darkdong 的回复:]

unicode不一定是双字节,但QString内部是utf16
[/Quote]
恩,utf-8也属于unicode,但是它多字节(1-N个)存储字符。现在gb2312转成了utf16,那么utf16的字符串如何转成gb2312的字符串?
巴依老爷 2010-08-25
  • 打赏
  • 举报
回复
unicode不一定是双字节,但QString内部是utf16
wyfwx 2010-08-25
  • 打赏
  • 举报
回复
unicode是双字节的
hitexam 2010-08-25
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 darkdong 的回复:]

了解一下汉字编码的背景知识这个问题就很简单了
QString内部是以unicode存储的,所以gb2312编码的字符串不能直接放到QString里,需要做个转换:
C/C++ code

QByteArray ba = query.value(2).toByteArray();//gb2312编码的字符串
QString str = QTextCodec::codecForName("GB……
[/Quote]
依照你的法子,的确可以。QString都是以utf-16编码的?
巴依老爷 2010-08-24
  • 打赏
  • 举报
回复
了解一下汉字编码的背景知识这个问题就很简单了
QString内部是以unicode存储的,所以gb2312编码的字符串不能直接放到QString里,需要做个转换:

QByteArray ba = query.value(2).toByteArray();//gb2312编码的字符串
QString str = QTextCodec::codecForName("GB2312")->toUnicode(ba);//把gb2312编码转换成unicode
...

yanj20 2010-08-24
  • 打赏
  • 举报
回复
hitexam 2010-08-24
  • 打赏
  • 举报
回复
沙发自己做了,烦请详细解答,不要草草了事,如果能授我以渔,另开贴送分

16,813

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧