python文件读写与编码解码

#最近接触到python的文件读写与编码解码,非常头疼,下面写一下最近的思考

# 目的为:分析在IDE中将中文字符串以默认编码写入txt文件,在windows系统下修改txt文件的编码,在ide中重新打开此txt出现错误的原因



# IDE的默认编码是utf-8

# 系统的默认编码是ANSI


# 对于以下代码


str="奥森山"
file=open(r"oythonhill.txt","w")
file.write(str)


# IDE对字符串"奥森山"用utf-8编码为二进制( 此处编码只针对IDE,需要和下面写入文件的编码区分开来)
# 写文件由于未指定编码,按照系统默认ANSI编码为二进制,存储在txt文件中
# 浏览文件时,按照默认ANSI将二进制解码为字符串,因此我们可以在txt窗口中浏览字符串


# 此时,对于以下代码


newfile=open(r"oythonhill.txt","r")
newfile=newfile.read()
print(newfile)


# 可以顺利读取txt文件,读取过程为:根据系统默认的ANSI将存储在txt中的二进制解码为字符串,然后读取


# 如果将txt以Unicode编码另存(如图), 则对于以下代码 newfile=open(r"oythonhill.txt","r") newfile=newfile.read() print(newfile) # 则不能顺利读取,会出现错误:UnicodeDecodeError: 'gbk' codec can't decode byte 0xff in position 0: illegal multibyte sequence # 原因是另存为操作将字符串"奥森山"重新以Unicode编码为二进制存储,而上述python代码则仍旧以默认ANSI解码,因此出现错误