linux下qt选择文本编码,Qt选择编码,中文

Qt发布应用程序方法

http://www.cr173.com/html/15231_1.html

通常在qt程序的main函数中,经常会有设置字符编码的函数:

QTextCodec :: setCodecForTr( QTextCodec :: codecForName( "GB18030" )); //为QObject::tr设置字符编码

QTextCodec :: setCodecForLocale( QTextCodec :: codecForName( "GB18030" )); //如果在linux上,设置local为gb18030可能会导致读取//或输出的unicode中文字符不能正确显示

QTextCodec

::setCodecForCStrings(QTextCodec :: codecForName( "GB18030" ) ); //为QString设置字符编码,默认情况下为Latin1

比如之后,就可以输入

QLabel *testLabel = new QLabel(

tr("测试") );

这样,不管是在windows上还是在X11平台上,就可以看到正确的显示结果了。

另外,在windows下,代码中输入的字符默认中文编码是GBK,但Linux上默认的中文编码的UNICODE,所以将windows上编写的含有中文qt代码,拿到linux上的QT

creator修改时,首先要选择中文编码格式,否则代码中的汉字就会是乱码。

常用的GBK转换UTF8的代码如下,用了http://blog.csdn.net/ACCP_2008123456/archive/2010/11/05/5988704.aspx上的例子

QTextCodec *gbk = QTextCodec::codecForName("gb18030");

QTextCodec

*utf8 = QTextCodec::codecForName("utf-8");

QTextCodec::setCodecForTr(gbk);

QTextCodec::setCodecForLocale(gbk);

QString

utfStr =

QObject::trUtf8(readByte); //utf-8

QString

gbkStr =

QObject::tr("中文"); // gbk

QString

utf2gbk =

gbk->toUnicode(readStr.toLocal8Bit()); // utf8

conver gbk

QString

gbk2utf1 =

utf8->toUnicode(utf2gbk.toUtf8()); // gbk convert utf8

QString g2u

=

gbk->toUnicode(gbk->fromUnicode(readStr)); // gbk convert utf8

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux 下使用 QT 读取带中文的 ini 文件,需要注意文件编码的问题。如果 ini 文件使用 UTF-8 编码,那么使用 QSettings 类即可直接读取中文字符。如果 ini 文件使用其他编码方式,你需要根据实际情况设置编解码器。 以下是一个读取 GB2312 编码的 ini 文件的例子: ```c++ #include <QCoreApplication> #include <QDebug> #include <QSettings> #include <QTextCodec> int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); // 创建 QSettings 对象,指定 ini 文件路径和格式 QSettings settings("/path/to/gb2312/file.ini", QSettings::IniFormat); // 设置编解码器为 GB2312 QTextCodec *gbkCodec = QTextCodec::codecForName("GB2312"); settings.setIniCodec(gbkCodec); // 读取 key 为 "用户名" 的值 QString username = settings.value("用户名").toString(); qDebug() << "用户名:" << username; // 读取 key 为 "密码" 的值 QString password = settings.value("密码").toString(); qDebug() << "密码:" << password; return a.exec(); } ``` 在这个例子中,我们首先创建了一个 QSettings 对象来读取 GB2312 编码的 ini 文件中的数据。然后,我们获取了 GB2312 编解码器,并将其设置为 ini 文件的编解码器。接着,我们通过 `value()` 方法读取指定 key 的值即可。 需要注意的是,如果你要读写的文本数据使用的编码方式不同于 GB2312 或 UTF-8,你需要根据实际情况调用相应的方法来设置编解码器。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值