代码之家  ›  专栏  ›  技术社区  ›  doctorlove

仅包含ASCII字符的UNICODE字符串是否始终等于ASCII字符串?

  •  17
  • doctorlove  · 技术社区  · 10 年前

    我注意到以下问题:

    >>> u'abc' == 'abc'
    True
    >>> 'abc' == u'abc'
    True
    

    这是真的还是可能取决于系统区域设置? (在python 3中,字符串似乎是unicode:例如。 this question ,但2.x中的字节数)

    1 回复  |  直到 7 年前
        1
  •  14
  •   Martijn Pieters    10 年前

    Python 2在 unicode str 在比较两种类型时使用ASCII编解码器。是的,这是 总是 真的。

    也就是说,除非您弄乱了Python的安装和使用 sys.setdefaultencoding() 以更改默认值。你不能正常做,因为 sys.setdefaultencoding() 函数为 删除 在启动时从模块中删除,但在人们使用的地方有一个Cargo Cult reload(sys) 恢复该函数并将默认编码更改为其他编码,以尝试修复隐式编码和解码问题。正是出于这个原因,这样做是愚蠢的。