zoukankan      html  css  js  c++  java
  • python unicode 和 str 类型的关系

    python (2.X)在进行 运行时候字符串运算的时候, 分为两种类型 str, unicode

    前者是 二进制的形式进行对字符串的保存,

    后者是 以unicode的方式进行保存, 一般的工作方式为:

    str -> decode() -> unicode ->encode() -> str, 在所有的运行时都为unicode是一个良好的习惯, 一般来说系统的库都是支持 unicode(个别除外:csv等)。 而且第三方的库也是支持的。 只有在将数据保存到文件,数据库等其他的外部的时候,需要将其转化成str 的byte形式, 这时候需要提供 编码格式 常用的为 utf-8, 中文gbk也可以。 有一个必须要注意的问题是, 还有一种叫做 string_escape 或者是 utf-escape的编码, 是将编码后的str以 字符串的形式进行保存, 比如 :

    >>> u'中文'
    u'u4e2du6587'
    >>> u'中文'.encode('utf-8')
    'xe4xb8xadxe6x96x87'
    >>> u'中文'.encode('utf-8').encode('string_escape')
    '\xe4\xb8\xad\xe6\x96\x87'

    '\xe4\xb8\xad\xe6\x96\x87' 和 'xe4xb8xadxe6x96x87' 字符在进行输出到控制台的时候 效果是一样的, 一般看不出来, 实际上他们是不等的, 所有需要在使用的时候 进行decode('string_escape'') 才能为 正常的str的 字符串, 而 string_escape是大多数 日志库输出的格式,所以在进行转化的时候,需要将其转化回去

  • 相关阅读:
    webrtc公开课
    webrtc第二篇 聊天室
    webrtc第一篇
    lua53
    setValuesForKeysWithDictionary forUndefinedKey
    xcode 插件
    2016年1月7日 隐藏NavigationBar时的一个坑
    jdbc
    brew gradle
    Openwrt TF Card Auto Mount&Check (4)
  • 原文地址:https://www.cnblogs.com/fartpig/p/4618580.html
Copyright © 2011-2022 走看看