zoukankan      html  css  js  c++  java
  • Python中文

    在python中有两种默认的字符串:str和unicode。在Python中一定要注意区分“Unicode字符串”和"Unicode对象”的区别。

    后面所有的“Unicode字符串”都是指"Unicode对象”。

    一个传统的字符串完全可以用str对象表示,它仅仅是一个字节流,除非解码为unicode对象,否则没有任何实际意义。

    一开始先上例子

    >>> s='哈哈'
    >>> s
    'xe5x93x88xe5x93x88'
    >>> type(s)
    <type 'str'>
    >>> 
    >>> ss = u'哈哈'
    >>> ss
    u'u54c8u54c8'
    >>> type(ss)
    <type 'unicode'>

    ss声明为unicode

    >>> u = s.decode('utf8')
    >>> u
    u'u54c8u54c8'
    >>> print u
    哈哈
    >>> 
    >>> u = s.decode('utf-16')
    >>> 
    >>> u
    u'u93e5ue588u8893'
    >>> print u
    鏥�袓

    将字符串s(utf8编码)使用decode进行解码后,可以得到同等得unicode对象,和直接声明为unicode的ss一样

    >>> u=ss.decode('utf8')
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "/usr/local/sinasrv2/lib/python2.7/encodings/utf_8.py", line 16, in decode
        return codecs.utf_8_decode(input, errors, True)
    UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)
    >>> u=ss.encode('utf8')
    >>> u
    'xe5x93x88xe5x93x88'
    >>> print u
    哈哈

    可以将unicode对象编码encode成其他字符集,不能进行解码decode,decode是针对utf8、GBK编码来说的

    下面再给一个例子进行说明:

    1、先声明一个unicode对象

    2、将其编码成gbk

    3、直接print出现不显示

    4、使用decode解码成GBK,正确显示

    >>> ss = u'哈哈'
    >>> ss
    u'u54c8u54c8'
    >>> t = ss.encode('gbk')
    >>> t
    'xb9xfexb9xfe'
    >>> print t
    
     >>> 
    >>> print t.decode('gbk')
    哈哈

    序列化unicode对象

    >>> str(ss)
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)

    向文件直接输出ss会抛异常。在处理unicode中文字符串的时候,必须首先对它调用encode函数,转换成其他编码输出。

    总结:在Python中,str对象就是一个字节数组,至于里面的内容是不是一个合法的字符串,以及这个字符串采用什么编码都不重要。

    这些内容需要用户自己记录和判断。这个限制也同样适用于unicode对象。要记住unicode对象中的内容可绝对不一定就是合法的unicode字符串。

    【参考链接】

    1、http://blog.csdn.net/mayflowers/article/details/1568852

  • 相关阅读:
    CSS---伪类
    CSS---选择器
    CSS---如何引用样式表
    HTML-- 表单
    HTML-- 文本标签
    HTML--连接、锚点
    HTML--表格
    递归算法
    PHPCMS V9 友情链接的调用
    thinkcmf跳转用户登录和个人中心页面时出现Call to undefined function sp_sql_posts()错误
  • 原文地址:https://www.cnblogs.com/gsblog/p/3860584.html
Copyright © 2011-2022 走看看