• 23610阅读
  • 18回复

【原创】GB编码与UTF8编码的转换 [复制链接]

上一主题 下一主题
离线XChinux
 

只看楼主 倒序阅读 楼主  发表于: 2005-12-15
在主函数app后加上这句:

QTextCodec::setCodecForLocale(QTextCodec::codecForName("GB18030"));


然后是从UTF8编码到GB编码的字符串转换方法:


QString Utf8_To_GB(QString strText)
{
    return QString::fromUtf8(strText.toLocal8Bit().data());
}


至于从GB到UTF8,那大家就经常用了:

QString GB_To_Utf8(char *strText)
{
    return QString::fromLocal8Bit(strText);
}


试验了四五个小时,终于找到上述简单方法。。。。好像又绕弯路了。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线hetal

只看该作者 1楼 发表于: 2006-01-10
不错
离线yuanxt71

只看该作者 2楼 发表于: 2006-02-05
兄弟,强哦!以前我也曾遇到过此问题,我还是请教TT公司的技术支持才搞定的!!
离线gytao_tx

只看该作者 3楼 发表于: 2006-03-17
请问各位大侠,为什么我的中文字符在单片机上显示是乱码。我也参考了各位的案例,试了试,还是不行。我用的qt是qt/e 2.3.7
离线gytao_tx

只看该作者 4楼 发表于: 2006-03-20
请问板主,你是在main.cpp 函数内加的
QTextCodec::setCodecForLocale(QTextCodec::codecForName("GB18030"));吗?
然后在写的下面两个函数,在要显示中文的地方调用上面的函数吗?
谢谢!初学QT,不是太懂,还请赐教!
离线XChinux

只看该作者 5楼 发表于: 2006-03-20
不是要显示中文,而是进行内码转换。
我是在写HTTP POST数据时,用于把QT界面上输入的UTF-8内码的汉字转换为GB内码的汉字而写的上面帖子。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线gytao_tx

只看该作者 6楼 发表于: 2006-03-20
ARM9的开发板上中文显示的问题

小弟刚学QT,现在正在做一个小的嵌入式系统。现在遇到一个难题,在开发板上不能显示中文。我参看了QT中文论坛的许多例子,也试了很多,还是不行。还请各位高手赐教。
付上我试过的方法:
一、btnselectitem[3] = new QLabel(QString::fromUtf8("12gtt退出gyt"),this);
显示出来的中文是“?”。
二,btnselectitem[3] = new QLabel(QString:: fromLocal8Bit("12gtt退出gyt"),this);
显示出来的结果和上面一样。
三、
QString mytr(char* buffer)
{
QTextEncoder* gbk=QTextEncoder::codecForName("Big5");
return gbk->toUnicode(buffer,strlen(buffer));
}
然后在要显示中文的地方使用该函数:
btnselectitem[3]->setText(mytr("工运讨"));
显示出来的是乱码
试了好半天了,都不成,还请各位高手指点!
附:我用的是ARM9的板子,系统是LINUX.2.4.10,QT/E.2.3.7
离线gytao_tx

只看该作者 7楼 发表于: 2006-03-20
就上面的问题,请问板主,谢谢!在线等!
离线XChinux

只看该作者 8楼 发表于: 2006-03-20
你的字体是否正确。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线gytao_tx

只看该作者 9楼 发表于: 2006-03-20
你指的是“12gtt退出gyt”吗?
离线gytao_tx

只看该作者 10楼 发表于: 2006-03-20
请问你所说的字体正确,是指我要显示中文的中文字符吗?
离线XChinux

只看该作者 11楼 发表于: 2006-03-21
是指你的Qt系统使用的中文字体
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线windytwang

只看该作者 12楼 发表于: 2006-03-21
请问,在qtextedit中输入的中文是unicode格式还是gb格式的啊.
关于ascii,unicode,gb三种格式可以解释一下吗?谢谢
离线jollyjia

只看该作者 13楼 发表于: 2006-05-23
楼主,我有一个问题,
比如我fc5 LINUX下编写的程序,
要对一个文本文件进行读写,
LINUX下文件的编码是UTF-8格式的,
但程序到WINDOW平台编译后,
读入文件就报错,
因为这边默认是GB13080的编码,
这种情况怎么办啊?
怎么样实现程序的移植呢?
让源代码和哪个UTF-8的文件过来一编译就可以运行?
离线XChinux

只看该作者 14楼 发表于: 2006-05-23
最好是通过QTextCodec这个类来进行编码转换。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线luckyhan

只看该作者 15楼 发表于: 2006-09-08
比如说我在gentoo下面作的应用
我用的utf8,
listWidget,从文件中读取中文显示出来,就是乱码,
QString pContent;//文件中读出的内容,含中英文
然后显示到listwidget的时候内容乱码,
从后台console打印的调试信息是正确的..
还希望xchinux帮忙下哈
离线XChinux

只看该作者 16楼 发表于: 2006-09-08
Qt使用UTF-8的话,读取GBK的文件,则读出来后
可进行如下转换:

   QString filename = QFileDialog::getOpenFileName(this,
           "请选择数据文件",
           "",
           "CSV文件 (*.csv)");
   if (filename.isEmpty())
   {
       return;
   }
   QFile file(filename);
   if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
   {
       return;
   }
   QTextCodec *codec = QTextCodec::codecForName("GBK");
   QString strLine;
   QStringList slNew;
   while (!file.atEnd())
   {
       strLine = codec->toUnicode(file.readLine());
          slNew << strLine;
    }
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线tcf918
只看该作者 17楼 发表于: 2010-07-27
我是初学者,请问您这样怎么能改变QTextStream的编码呢
  QTextStream textStream(&file);
                 GB_To_Utf8(textStream);
   这样不行阿
离线adria

只看该作者 18楼 发表于: 2010-12-05
学习了,谢谢楼主。
快速回复
限100 字节
 
上一个 下一个