zoukankan      html  css  js  c++  java
  • 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'>
  • 相关阅读:
    全球市场
    去做《波士堂》的现场观众?
    JavaScript测试工具
    Opera 10 正式版发布
    [ZZ]亚马逊购物的用户体验分析
    中国电子商务十二年调查报告
    推荐——李黎的《轻公司》
    [ZZ]国外互联网发展趋势
    [ZZ]走出Google(下)
    空中英语教室
  • 原文地址:https://www.cnblogs.com/songbird/p/7525011.html
Copyright © 2011-2022 走看看