• 4531阅读
  • 5回复

[提问]QT 中文转码问题 [复制链接]

上一主题 下一主题
离线lxxxzxx
 

只看楼主 倒序阅读 楼主  发表于: 2013-02-21
— 本帖被 XChinux 从 Qt基础编程 移动到本区(2013-04-01) —
请问各路大神~我将一组中文字符串由GBK转码成Utf-8,然后再转回来,为什么在这组中文字符中会出现"?"啊,请大神们帮帮忙,很急!!!
eg:我的中文字符串是:2013年度工作计划与2012年度工作考核表-2013.2.20-李.doc
离线lxxxzxx

只看该作者 1楼 发表于: 2013-02-21
自己先顶一下
离线XChinux

只看该作者 2楼 发表于: 2013-02-21
你是怎么转的,帖下代码
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线lxxxzxx

只看该作者 3楼 发表于: 2013-02-21
回 2楼(XChinux) 的帖子
我刚才试了一下,是个别几个字符转回来是“?”,比如:公司企业员工年终考核表-20120221-李.doc。我先将这个字符用QString存储,QString text = *****;QString text_utf8 = text.toUtf8();再转回来:QString text_gbk = QString::fromUtf8(text_utf8.toStdString().c_str());这个时候,这行字符就有不识别字符了,比如“?”。怎么办啊版主???
离线lxxxzxx

只看该作者 4楼 发表于: 2013-02-21
回 2楼(XChinux) 的帖子
而且不是所有的都转不回来,好像就是那个“表”字转回来就是“?”,我做了一个小demo试了一下就是这个结果
离线XChinux

只看该作者 5楼 发表于: 2013-02-21
这似乎没什么用吧,下面的代码我没立即试验过,仅供参考:

我们假设,你的代码中使用的是GBK编码,这样汉字也是GBK编码(假设已经设置了QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GBK"));):

QString strUtf8 = QString::fromLocal8Bit(" 这是GBK中文字符串");
QString strGBK(strUtf8.toLocal8Bit());
==============================

// 读取GBK字符串,输出Utf8字符串
QTextStream in(&strGBK);
in.setCodec("GBK");
QString strUtf8_2 = in.readAll();

// 将Utf8字符串,输出为gbk字符串
QString strGBK_out;
QTextStream out(&strGBK_out);
out.setCodec("GBK");
out << strUtf8;


二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
快速回复
限100 字节
 
上一个 下一个