GBK转换封装

//    封装 

#ifndef _QT_GBK_H
#define _QT_GBK_H
#include<QString>
#include<QTextCodec>
#include<string>
using std::string;

class GBK
{
public:
    static string FromUnicode(const QString& qstr)
    {
        QTextCodec* pCodec = QTextCodec::codecForName("gb2312");
        if (!pCodec)return "";

        QByteArray arr = pCodec->fromUnicode(qstr);
        string cstr=arr.data();
        return cstr;
    }
    static QString ToUnicode(const string& cstr)    //QBT转换QString
    {
        QTextCodec* pCodec = QTextCodec::codecForName("gb2312");
        if (!pCodec)return "";

        QString qstr = pCodec->toUnicode(cstr.c_str(), cstr.length());
        return qstr;

    }
};
#endif//

使用::
    QString str = GBK::ToUnicode("你好中国");
    ui.linetxt->setText(str);    //uilinetxt->setText(GBK::ToUnicode("你好中国"))

        string text = GBK::FromUnicode(ui.linetxt->text());//获取用户输入
时间: 2024-10-12 07:25:29

GBK转换封装的相关文章

UTF-8到GBK转换

实际就是由宽字节转换为多字节的过程 ------------- 首先MultiByteToWideChar(CP_UTF8, 0, (LPCSTR)szOut, -1, (LPWSTR)wszGBK, len) 转换UTF-8 到表中UNICODE 然后 WideCharToMultiByte(CP_ACP, 0, (LPWSTR)wszGBK, -1, szGBK, len, NULL, NULL); UNICODE转换为标准多字节 这个时候已经是ANSI格式了,其实不是GBK格式,但是一般这

python_时间戳和格式化时间转换封装函数

1.时间戳转换格式化时间 import time def timestamp_to_str(timestamp=None,format='%Y-%m-%d %H:%M:%S'): '''这个是把时间戳转换成格式化好的实际,如果不传时间戳,那么就返回当前的时间''' if timestamp: return time.strftime(format,time.localtime(timestamp)) else: return time.strftime(format,time.localtime

MySQL数据库从GBK转换到UTF-8最简单解决方案(也适用于其它编码转换)

1.使用mysqldump导出表结构,如: mysqldump -d -u root -p 数据库名 >/root/struct.sql 2.使用mysqldump以特定编码导出数据(其中utf8为所需编码,可按需修改),如: mysqldump --default-character-set=utf8 -t -u root -p 数据库名 >/root/data.sql 3.打开表结构转存(/root/struct.sql),将所有CREATE TABLE中的编码替换为所需编码: 4.进入m

UTF8 &amp; GBK之间的转换

使用lua的时候,在lua中给字符串赋值的中文,但是在C中读出来的就是乱码,是因为在lua中使用的是UTF8编码,而在C(windows下面)中使用的是GBK编码,将UTF8转成GBK就可以了,下面的代码就是实现这一转换的 转自:http://www.cppblog.com/zgysx/articles/13085.html // 1.将GBK转换成UTF8 string GBKToUTF8(const std::string& strGBK) { string strOutUTF8 = &quo

Linux下查看文件编码,文件编码格式转换和文件名编码转换

linux相关   2008-10-07 10:46   阅读1392   评论0   字号: 大大  中中  小小  如果你需要在Linux中 操作windows下的文件,那么你可能会经常遇到文件编码转换的问题.Windows中默认的文件格式是GBK(gb2312),而Linux一般都是 UTF-8.下面介绍一下,在Linux中如何查看文件的编码及如何进行对文件进行编码转换. 查看文件编码 在Linux中查看文件编码可以通过以下几种方式: 1.在Vim中可以直接查看文件编码 :set file

关于解决乱码问题的一点探索之二(涉及Unicode(utf-16)和GBK)

    在上篇日志中(链接),我们讨论了utf-8编码和GBK编码之间转化的乱码问题,这一篇我们讨论Unicode(utf-16编码方式)与GBK编码之间转换的乱码问题.     在Windows系统自带的记事本中,我们按照图中所示使用Unicode编码保存.     在Visual Studio 2005中,单击"文件|高级保存选项"中选择Unicode-代码页1200. 文件中只有乱码与ASCII码     按照上一篇日志中的方法,我们使用WinHex软件查看文件的16进制数据,如

字符集GBK升级UTF8

在生产环境中,数据库字符集因为各种原因需要升级,比如为了支持汉字,从latin1字符集升级到GBK,后面为了支持多个语言文字,需要将GBK升级到UTF8等.迁移过程网上有很多,我今天主要想讲下字符集转换后,可能对业务产生的影响,我以GBK转换到UTF8为例说明.主要有两点: 汉字在GBK编码中占2个字节,在UTF8编码中占3个字节,而mysql的索引要求总长度不超过767个字节,因此索引字符数会被缩短(383->255),特别的,对于唯一索引,要求索引字段长度小于256个字符. 编码转换后,导致

day03-字符编码与转换

1.编码常识 在python 2中默认编码是 ASCII,而在python 3中默认编码是 unicode unicode 分为utf-32 (占4个字节),utf-16(占两个字节),utf-8(占1-4个字节),所以utf-16 是最常用的unicode版本,但是在文件里存的还是utf-8,因为utf8省空间 在python 3,encode编码的同时会把stringl变成bytes类型,decode解码的同时会把bytes类型变成string类型 在unicode编码中 1个中文字符=2个

爬虫中gbk网页内容的处理

有些网站仍在使用GBK编码,而JS内部字符编码使用Unicode来表示,node编写的爬虫需要做的转换是GBK->Unicode->utf-8,关于三者关系参考http://www.cnblogs.com/cy163/archive/2007/05/31/766886.html. var request = require('request'); var cheerio = require('cheerio'); request('http://www.taobao.com/',functio