• string和unicode


    string object是由characters组成的sequence,而unicode object是Unicode code units组成的sequence。

    string里的character是有多种编码方式的,比如单字节的ASCII,双字节的GB2312等等,再比如UTF-8。很明显要想解读string,必需知道string里的character是用哪种编码方式,然后才能进行。

    Unicode code unit又是什么东西呢?一个Unicode code unit是一个16-bit或者32-bit的数值,每个数值代表一个unicode符号。在python里,16-bit的unicode,对应的是ucs2编码。32-bit对应的是ucs4编码。是不是感觉string里character的编码没什么区别?反正我现在脑子里就是这样一个印象:在Python里,ucs2或者ucs4编码的(所以才说unicode也可以解码?),我们叫做unicode object,其他编码(utf8,gbk之类)的我们就叫做string。

    使用chardet判断字符串编码

    安装:pip install chardet

    # -*- coding:utf-8 -*-
    import chardet
    
    a = '哈哈'
    b = u'哈哈'
    print type(a)
    print type(b)
    print chardet.detect(a)
    print chardet.detect(a.encode('gbk'))
    print chardet.detect(b)

    输出:

    <type 'str'>
    <type 'unicode'>
    {'confidence': 0.75249999999999995, 'language': '', 'encoding': 'utf-8'}
    {'confidence': 0.72999999999999998, 'language': '', 'encoding': 'ISO-8859-1'}
    Traceback (most recent call last):
      File "C:UsersadminDesktopad.py", line 10, in <module>
        print chardet.detect(b)
      File "C:Python26libsite-packageschardet\__init__.py", line 34, in detect
        '{0}'.format(type(byte_str)))
    TypeError: Expected object of type bytes or bytearray, got: <type 'unicode'>
  • 相关阅读:
    Oracle结构连接配置结构
    理解cookie和session机制
    Asp.net中网站级异常捕获
    C#字符串函数大全
    一个简单的C#多线程间同步的例子
    SQL中的存储过程存放位置
    类和结构的区别?
    SQL点滴9—使用with语句来写一个稍微复杂sql语句
    Asp.NET 的Session实现原理 转自21kaiyun.com
    Script to analyze table space usage
  • 原文地址:https://www.cnblogs.com/songbird/p/7525011.html
Copyright © 2020-2023  润新知