python 字符串编码,区别utf-8 和utf-8-sig - 静悟生慧- 博客园

文章推薦指數: 80 %
投票人數:10人

要打开的路径比预期A.txt多了一串字符"\ufeff", 显然无法正确打开文件. 解决方案:. 在读取B.txt 时,指定编码方式为"utf-8-sig"即可 如下 ... 首页 新闻 博问 专区 闪存 班级 我的博客 我的园子 账号设置 简洁模式... 退出登录 注册 登录 静悟生慧 python字符串编码,区别utf-8和utf-8-sig Python读取文件首行多了"\ufeff"字符串 python读取B.txt文件时,控制台打印首行正常,但是若是用首行内容打开文本的话,就会报错: Traceback(mostrecentcalllast): A File"E:/pythonproject/multiProcess/test.py",line32,in withopen("%s.txt"%line,'r',encoding='utf-8')asf1: FileNotFoundError:[Errno2]Nosuchfileordirectory:'\ufeffA.txt'    要打开的路径比预期A.txt多了一串字符"\ufeff", 显然无法正确打开文件. 解决方案: 在读取B.txt 时,指定编码方式为"utf-8-sig"即可 如下: withopen("B.txt",'r',encoding='utf-8-sig')asf: line=f.readline()[0:-1]#去掉末尾换行符 print(line) withopen("%s.txt"%line,'r',encoding='utf-8')asf1: 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')报UnexpectedUTF-8BOM(decodeusingutf-8-sig)错误,将encoding改为'utf-8-sig'仍然报错。

原因分析: text包含BOM字符 解决方案: 将BOM头去掉,代码如下: iftext.startswith(u'/ufeff'): text=text.encode('utf8')[3:].decode('utf8') 链接:https://www.jianshu.com/p/f94b3fc04f5b posted@ 2019-03-1511:47  静悟生慧  阅读(18903)  评论(0)  编辑  收藏  举报 刷新评论刷新页面返回顶部 Copyright©2022静悟生慧 Poweredby.NET6onKubernetes



請為這篇文章評分?