• Python序列——Unicode


    1. Unicode是什么

    Unicode是对字符进行编码的一种标准。而utf8或者utf-8是根据Unicode的标准实现的一种存储方式。

    2. Python中的Unicode

    >>> u'furzoom'  # <--- Unicode string
    u'furzoom'
    >>> 'furzoom'   # <--- ascii string
    'furzoom'
    >>> '在'
    'xe5x9cxa8'
    >>> '在'.decode('utf8')
    u'u5728'
    >>> '在'.decode('utf8').encode('utf8')
    'xe5x9cxa8'

    3. 编码与解码

    目前一般都建议在编程Python脚本时采用UTF-8的编码形式,这个指的文件的编码形式。Python内部是采用Unicode表示的。在Python中写下一行u'furzoom',它是Unicode字符串。如果是'furzoom',它的编码方式与该脚本文件的编码方式是一致的。如果要把该字符串存储到文件中,期望其他程序能够正确的解决字符串,该怎么办呢?

    如果是Unicode字符串,需要指定用什么样的编码方式来编码字符串,通过的做法是采用UTF-8的方式。同时从文件中读取时,就是一个逆向的过程。看下面的例子:

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    
    """
    An example of reading and writing Unicode strings: Writes a Unicode
    string to a file in utf-8 and reads it back in.
    """
    
    CODEC = 'utf-8'
    FILE = 'unicode.txt'
    
    hello_out = u'Hello Furzoom
    '
    bytes_out = hello_out.encode(CODEC)
    f = open(FILE, 'w')
    f.write(bytes_out)
    f.close()
    
    f = open(FILE, 'r')
    bytes_in = f.read()
    f.close()
    hello_in = bytes_in.decode(CODEC)
    print hello_in

    4. 在应用中使用Unicode的建议

    • 程序中出现字符串时一定要加个前缀u。
    • 不要用str()函数,用unicode()代替。
    • 不用string模块,对Unicode支持的不好。
    • 不到必须时,不要在程序中编解码Unicode字符。只在要写入文件或数据库或者网络时,才进行编码。相反的过程才进行解码。
    作者:马 岩Furzoom) (http://www.cnblogs.com/furzoom/
    版权声明:本文的版权归作者与博客园共同所有。转载时请在明显地方注明本文的详细链接,未经作者同意请不要删除此段声明,感谢您为保护知识产权做出的贡献。
  • 相关阅读:
    base64 压缩上传上传图片
    mvc 微信支付
    微信自动回复消息的坑
    solr集群搭建,zookeeper集群管理
    zookeeper集群的搭建
    linux环境下搭建solr服务器--单机版
    连接redis集群报错问题解决java.lang.NumberFormatException: For input string: "7002@17002"
    linux环境下搭建ActiveMQ集群
    windows下以及Linux环境下安装activeMQ
    卸载linux系统自带JDK,安装自己的jdk
  • 原文地址:https://www.cnblogs.com/furzoom/p/7710245.html
Copyright © 2020-2023  润新知