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

Python2.7文件编码失败

  •  0
  • fueggit  · 技术社区  · 7 年前

    当我使用Python2.7并试图通过以下方式声明Python源代码编码时:

    #!/usr/bin/python
    # -*- coding: utf-8 -*-
    

    当我通过以下方式检查文件编码时:

    check_encoding = sys.getdefaultencoding()
    logger.warning("check_encoding ")
    

    我得到:

    ascii
    

    当我使用python 3时,我可以通过声明源代码编码:

    #!/usr/bin/python3
    # -*- coding: utf-8 -*-
    

    当我通过以下方式检查文件编码时:

    检查编码=sys.getDefaultEncoding()
    logger.warning(“检查编码”)
    

    我得到:

    utf-8
    

    我不知道Python2.7版本有什么问题,也不知道是什么原因造成的。

    1 回复  |  直到 7 年前
        1
  •  0
  •   Serge Ballesta    7 年前

    您混淆了源代码编码(声明为 # -*- coding: utf-8 -* )默认的运行时编码with用于unicode和字节字符串之间的隐式转换。它们在Python2和Python3中完全不相关。

    从这个意义上说 #-*-编码:UTF-8-* 在python 2和python 3中的行为完全相同:它在当前源文件中声明unicode litterals的编码。

    但系统默认编码不同。在python 2中它通常是ascii,并且可以依赖于python 3上的环境,默认值为utf-8。所以你在代码中得到相同的值只是偶然的…