python 字符串编码 ,区别 utf-8 和utf-8-sig
Python 读取文件首行多了"\ufeff"字符串
python读取B.txt文件时,控制台打印首行正常,但是若是用首行内容打开文本的话,就会报错:
Traceback (most recent call last):
A
File "E:/python project/multiProcess/test.py", line 32, in <module>
with open("%s.txt" % line, 'r', encoding='utf-8') as f1:
FileNotFoundError: [Errno 2] No such file or directory: '\ufeffA.txt'
要打开的路径比预期A.txt多了一串字符"\ufeff", 显然无法正确打开文件.
解决方案:
在读取B.txt 时,指定编码方式为 "utf-8-sig"即可 如下:
with open("B.txt", 'r', encoding='utf-8-sig') as f:
line = f.readline()[0:-1] #去掉末尾换行符
print(line)
with open("%s.txt" % line, 'r', encoding='utf-8') as f1:
print(f1.readline())
f1.close()
f.close()
首行出现的”\ufeff“叫BOM("ByteOrder Mark")用来声明该文件的编码信息.
”utf-8“ 是以字节为编码单元,它的字节顺序在所有系统中都是一样的,没有字节序问题,因此它不需要BOM,所以当用"utf-8"编码方式读取带有BOM的文件时,它会把BOM当做是文件内容来处理, 也就会发生类似上边的错误.
"uft-8-sig"中sig全拼为 signature 也就是"带有签名的utf-8", 因此"utf-8-sig"读取带有BOM的"utf-8文件时"会把BOM单独处理,与文本内容隔离开,也是我们期望的结果.
原文:https://blog.csdn.net/wozaizhe56/article/details/82048645
摘要:问题描述:json.loads(text,encoding='utf8')报UnexpectedUTF-8BOM(decodeusingutf-8-sig)错误,将encoding改为'utf-8-sig'仍然报错。原因分析:text包含BOM字符解决方案:将BOM头去掉
问题描述:
json.loads(text,encoding='utf8') 报Unexpected UTF-8 BOM (decode using utf-8-sig)错误,将encoding改为'utf-8-sig'仍然报错。
原因分析:
text包含BOM字符
解决方案:
将BOM头去掉,代码如下:
if text.startswith(u'/ufeff'):
text = text.encode('utf8')[3:].decode('utf8')
链接:https://www.jianshu.com/p/f94b3fc04f5b
最新文章
- Exception in thread ";main"; java.lang.ExceptionInInitializerError
- Python学习路程day15
- UDP的坏处
- BZOJ3928 [Cerc2014] Outer space invaders
- Oracle数据库编程:在JDBC中应用Oracle
- UIExtendedEdge
- bat处理打开关门exe
- ExtJs007最常用的查询方法
- codeforces Round #259(div2) E解决报告
- JavaScript插件——按钮
- 【Egret】里使用audio标签达到默认播放背景音乐
- socket.io 出现的WebSocket is closed before the connection is established
- Ext.Net的一例Ext Undefined解决办法
- ioctl函数
- MySQL(介绍,安装,密码操作,权限表)
- 用mybatis做数据库处理 代码中的字段大小写 要和mapper映射设置的大小写一致(这TM不废话么,原谅我渣!~~)
- Linux镜像源
- 【C语言】 使用Beep() 函数 演奏歌曲
- 漫画:高并发下的HashMap
- Winsock解析
热门文章
- 禁用系统的Ctrl+Alt+Left/Right(方向键)
- SSH协议
- vue refs v-for 使用注意
- JSP页面跳转之sendRedirect()与forward()辨析
- Java ReEntrantLock (Java代码实战-001)
- V-rep学习笔记:Geometric Constraint Solver(几何约束求解)
- VREP中使用其它Lua库
- HttpServletRequest对象(一)
- Spring Cloud Edgware Release Notes
- weblogic静默安装指导