zoukankan      html  css  js  c++  java
  • QString,string,char* 在utf8和gbk不同编码下的相互转化

    关于编码简介:ascii编码是最开始的编码规则本,里面只收纳了英文、特殊字符、数字等有限字符,采用的是8位一个字节的方式进行编码对照;unicode在ascii码的基础上进行了升级扩展,立志将全世界所有国家的语言文字等字符都编进去,故又被称为万国码;unicode采用的编码方式为统一四字节表示一个字符;由于unicode采用的是四个字节表示一个字符这种方式极大地浪费了资源和空间,所以又出现了对unicode进行优化且兼容ascii码的utf-8,又称为可变长度字符编码,采用的规则是英文使用一个字节去表示(也就是兼容了ascii码在内),中文则是三个字节去表示一个字符

    1. QString 转 string 

    1 QString qstr = "测试";
    2 string  str = qstr.toStdString();

    在qt4中,QString::toStdString() 转的string的编码是Unicode 

    需要转unicode编码的string,用toStdString(),需要转utf-8编码的string,用

    1 QString qstr = "测试";
    2 string  str = qstr.toUtf8().data();

    在qt5中,QString::toStdString()转的string的编码是utf-8

    需要转unicode编码的string,用

    1 QString qstr = "测试";
    2 string  str = qstr.toLocal8Bit().data()

    需要转utf-8编码的toStdString()

    1 QString qstr = "测试";
    2 string  str = qstr.toStdString();

    2. string 转 QString

    因为在qt4和再qt5中的QString::fromStdString()的编码格式的改变,转QString略有不同。

    在qt4中:utf-8 string 转QString

    1 string str = "测试";
    2 QString qstr =QString::fromUtf8(str.c_str());

    Unicode  string 转 QString

    1 string  str = "测试";
    2 QString qstr = QString::fromStdString(str);

    在qt5中:utf-8 string 转QString

    1 string  str = "测试";
    2 QString qstr = QString::fromUtf8(str);

    Unicode  string 转 QString

    1 string  str = "测试";
    2 QString qstr = QString::fromStdString(str);

    3. string 转 char*

    1 string str = "测试";
    2 char* ch = str.c_str();

    4. char* 转 string

    1 char* ch = "测试";
    2 string str = ch;
  • 相关阅读:
    JavaScript与多线程的不解之缘!
    CSS居中的常用方式以及优缺点
    聊一聊Axios与登录机制
    熟悉而陌生API:Promise
    Cassandra数据类型:
    Cassandra 键空间(keyspace),表(table)
    Cassandra 配制 cassandra.yaml
    Linux 环境变量PS1设置
    添加sudo权限
    ssh免密码认证
  • 原文地址:https://www.cnblogs.com/tyche116/p/8665585.html
Copyright © 2011-2022 走看看