• 6895阅读
  • 11回复

QString的编码问题: [复制链接]

上一主题 下一主题
离线iiiyyyhhhsss
 

只看楼主 倒序阅读 楼主  发表于: 2009-08-31
在linux下,定义 QString  strs="打开";

但当把strs放到textEdit上显示时,却显示乱码。。。

应该是由于linux下默认是UTF-8的原因造成的,

请问该如何设置转换?
离线john123
只看该作者 1楼 发表于: 2009-08-31
善用搜尋
离线iiiyyyhhhsss

只看该作者 2楼 发表于: 2009-08-31
我找了一个下午,还没有找到对应的函数,郁闷。。。。
离线iiiyyyhhhsss

只看该作者 3楼 发表于: 2009-08-31
谁能给一段最简单的以UTF-8方式读取一个文本文档的代码来看看。。。
FileName为路径名,textEdit为QTextEdit类对象。。。。
离线dbzhang800

只看该作者 4楼 发表于: 2009-08-31
1. 你顶楼的问题,我认为默认情况下不会出现乱码现象。除非你把源代码故意保存成与你locale不一致的编码,(比如lcoale是utf8, 你保存成 gbk,或者反过来)

2.自己去看QTextStream
离线dancyz

只看该作者 5楼 发表于: 2009-08-31
qt里面如果直接在程序中写中文 是有乱码问题的。。
要有一个转换函数,
QString mytr(const char* chars) {
    return gbk->toUnicode(chars, strlen(chars));
}

在需要输出中文的时候mytr("中文")即可。。。
离线iiiyyyhhhsss

只看该作者 6楼 发表于: 2009-08-31
顶楼的代码的确是乱码啊,我就是用这两行代码的:

    QString ON="打开Open";
    m_ui->textEdit->setPlainText(ON);


dancyz的方法我试试看。。。。
离线john123
只看该作者 7楼 发表于: 2009-08-31
QPainterPath*  end_p=new QPainterPath;
    QString str;
    str=QString::fromUtf8("遊戲結束");
    end_p->addText(80,250,QFont("UnicodeUTF8",50,QFont::Bold),str);
    painter.drawPath(*end_p);
离线iiiyyyhhhsss

只看该作者 8楼 发表于: 2009-08-31
呵呵,楼上这句够快捷!
str=QString::fromUtf8("遊戲結束");
离线dbzhang800

只看该作者 9楼 发表于: 2009-08-31
引用第6楼iiiyyyhhhsss于2009-08-31 20:43发表的  :
顶楼的代码的确是乱码啊,我就是用这两行代码的:
    QString ON="打开Open";
    m_ui->textEdit->setPlainText(ON);
.......


恩,确实说错了,linux下,C字符串向QString转换时默认用的是Latin-1。 设为utf-8就好了。


QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));

楼上的提到方式是desinger生成的代码中最常用的方式。

当然要支持国际化的话,最好程序内界面相关部分没有中文,靠翻译包提供。
离线iiiyyyhhhsss

只看该作者 10楼 发表于: 2009-08-31
才知道原来是这样的。。。。又学到了
离线allblue

只看该作者 11楼 发表于: 2009-09-01
tr 函数 是否也可以??首先要setCodeForTr()才行。
黑暗魔法
快速回复
限100 字节
 
上一个 下一个