|
|

楼主 |
发表于 2014-8-28 23:02:19
|
显示全部楼层
哈哈哈哈,如此坑爹的编码问题,还是让哥来终结吧!!!
直接上代码:
- #!/usr/bin/env python3
- # -*- coding: utf-8 -*-
- # Files Name: 读写文件.py
- # Release By: Lyke.cc
- import locale
- def Echo(Str):
- '''像PHP的ECHO一样完美的输出文件数据,自适应各种平台编码,彻底解决坑爹的编码问题! -- By Lyke.cc'''
- try:
- print(Str) # 尝试输出原始文件数据
- except UnicodeError:
- Charset=locale.getpreferredencoding()
- print(Str.encode(Charset,'ignore').decode(Charset,'ignore')) # 输出自适应平台编码的文件数据
- # Python3读写文件: r => 文本只读 w => 文本重写(不存在则创建) a => 文本追加(不存在则创建) X+b => 二进制读写
- try:
- with open('Test.txt',mode='a',encoding='utf-8',errors='ignore') as File:
- File.write("www.fuck.com I'm法克鱿 © 2001-2013 By 中文524μg/m3\n")
- with open('Test.txt',mode='r',encoding='utf-8',errors='ignore') as File:
- Data=File.read()
- Echo(Data)
- except OSError as Err:
- print(Err)
- else:
- print('读写文件成功!')
- input('按回车键退出:')
复制代码
完美输出各种编码文件,自适应各个平台默认编码环境。本贴内讨论的各种问题,皆因平台默认编码引起,导致此问题各大社区一致无解,表示坑爹。既然起因是默认编码,那我们就在输出时投其所好,编码为默认编码,这样问题就解决了。
注意:Python的默认输出print()会自动根据各个平台的默认编码转换,最坑的是竟然是严格的转换模式,errors='strict',so,各种编码错误就爆出来了。悲剧啊。。。
推荐大家以后输出都使用我上面的Echo函数吧,像PHP的ECHO一样完美的输出文件数据,自适应各种平台编码,彻底解决坑爹的编码问题!
|
|