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