zoukankan      html  css  js  c++  java
  • char和QChar(Unicode的编码与内存里的值还不是一回事)

    char类型是c/c++中内置的类型,描述了1个字节的内存信息的解析。比如:

    char gemfield=’g’;
    那么在由gemfield标记的这块内存的大小就是1个字节,信息就是01100111,8位。

    再比如:

    char gemfield=’汉’;
        那么由gemfield标记的这块内存的大小依然是1个字节,存储的信息是:0xBA,这是因为在windows系统中,汉字是以gbk编码(ANSI)存储的,“汉”这个字的编码是0xBABA,因为char只有1个字节,所以就把低字节存储过来。

       经过gemfield上面的介绍后,你已经理解了char这个内置类型的用法,也就理解了下面语句的输出了:

    char gemfield=0×40;
    printf(“gemfield’s value is %c”,gemfield);
    QChar是Qt处理字符的基本类型,是对unicode字符的封装。QChar使用2个字节的内存,在其内部维护了一个unsigned short 类型的内存(大多数的编译工具也会把它当作unsigned short类型)。使用的是ucs-2标准。

    首先,QChar封装一个char类型是相当容易理解的,char类型作为QChar的构造参数时,会被转换为unsigned short,继而可被QChar接管。

    其次,QChar封装一个unsigned short类型也是容易理解的,比如:

    QChar gemfield=0x6C49;
            0x6C49是“汉”字的unicode编码,这样,依据Qt内部使用的unicode表和codec插件,gemfield就可以被成功解析为“汉”这个字。

    最后,下面这种情况是QChar不能处理的:

    QChar gemfield = ‘汉’;
    因为在windows上,“汉”的编码是gbk编码,值为0xBABA,正如gemfield上文提到的那样。这样,由QChar维护的unsigned short内存上的信息是0xBABA,这个值并不是unicode编码(unicode编码值是gemfield上文中提到的0x6C49),所以解析不了。

    同理,QChar可以通过unicode()函数返回一个字符的unicode编码。

    QChar提供了丰富的函数,来实现一些字符的转换操作和字符的判断操作,关于这些方面的疑问,请参考Qt的文档,或者去http://civilnet.cn/qt上提问。

    参考:

    https://www.yuque.com/docs/share/41a549e9-258d-405e-b2ed-4d32e3ee5e57
    ---------------------
    作者:冷月醉雪
    来源:CSDN
    原文:https://blog.csdn.net/lengyuezuixue/article/details/80712909
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    Json对象与Json字符串互转(4种转换方式)
    Web.config配置文件详解
    jQuery BlockUI Plugin Demo 6(Options)
    jQuery BlockUI Plugin Demo 5(Simple Modal Dialog Example)
    jQuery BlockUI Plugin Demo 4(Element Blocking Examples)
    jQuery BlockUI Plugin Demo 3(Page Blocking Examples)
    jQuery BlockUI Plugin Demo 2
    <configSections> 位置引起的错误
    关于jQuery的cookies插件2.2.0版设置过期时间的说明
    jQuery插件—获取URL参数
  • 原文地址:https://www.cnblogs.com/findumars/p/10726605.html
Copyright © 2011-2022 走看看