Python第六课——Python中编码问题汇总

python文件开头第一行设置uft-8编码方式,若不添加文件中涉及中文会报错
设置方法:

1、文件开头第一行添加
#coding=utf-8

2、文件开头第一行添加
# -*- coding: utf-8 -*-

查看自己电脑的python的编码设置

# -*- coding: utf8 -*-
import sys
import locale
"""
locale.getpreferredencoding() 重要参数,默认为打开本地操作系统读取的文本文件的编码方式,因操作系统而异,除非指定
sys.stdout/stdin/stderr 标准输出/输入/错误输出 PYTHONIOENCODING 变量指定
sys.getdefaultencoding() python将binary data转换为str的默认编码方法
sys.getfilesystemencoding() Python编码解码文件名,调用操作系统文件API

"""

if __name__ == '__main__':

    expressions = """
        locale.getpreferredencoding()
        type(my_file)
        my_file.encoding
        sys.stdout.isatty()
        sys.stdout.encoding
        sys.stdin.isatty()
        sys.stdin.encoding
        sys.stderr.isatty()
        sys.stderr.encoding
        sys.getdefaultencoding()
        sys.getfilesystemencoding()
    """

    my_file = open('dummpy', 'w')

    for expression in expressions.split():
        value = eval(expression)
        print(expression.rjust(30), '->', repr(value))
 locale.getpreferredencoding() -> 'cp936'
                 type(my_file) -> <class '_io.TextIOWrapper'>
              my_file.encoding -> 'cp936'
           sys.stdout.isatty() -> False
           sys.stdout.encoding -> 'utf-8'
            sys.stdin.isatty() -> False
            sys.stdin.encoding -> 'utf-8'
           sys.stderr.isatty() -> False
           sys.stderr.encoding -> 'utf-8'
      sys.getdefaultencoding() -> 'utf-8'
   sys.getfilesystemencoding() -> 'utf-8'

由上可知:
locale.getpreferredencoding() 为打开本地文件时使用的解码器
sys.getdefaultencoding() 为在python程序内,在字节序列和字符串之间转换时使用’‘utf-8’’
sys.getfilesystemencoding()为打开文件名称编码器

附:
 cp936:中文本地系统是Windows中的cmd,默认codepage是CP936,cp936就是指系统里第936号编码格式,即GB2312的编码。(当然有其它编码格式:cp950 繁体中文、cp932 日语、cp1250 中欧语言)

在开发Python程序的过程中,会涉及三个方面的编码:

  • python程序文件的编码
  • Python程序运行时环境(IDE)的编码
  • Python程序读取外部文件、网页的编码

python程序文件的编码:即在第一行增加utf-8编码(若含有中文)
Python程序运行时环境(IDE)的编码:如下即为pycharm编辑器的编码
在这里插入图片描述
在windows cmd下去执行:比如cmd:python3 test1.py
(Windows cmd 用的是cp936,也就是中文的GB2312)

参考文档:
https://www.cnblogs.com/fnng/p/5008884.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值