python utf8 bom,在Python中将没有BOM的UTF-8转换为带有 ...
文章推薦指數: 80 %
I have a set of files which are usually UTF-8 with BOM. ... that can take any known Python encoding and output as UTF-8 without BOM?
pythonutf8bom,在Python中将没有BOM的UTF-8转换为带有BOM的UTF-8
weixin_39609483
于 2020-12-2905:27:18 发布
110
收藏
文章标签:
pythonutf8bom
Twoquestionshere.IhaveasetoffileswhichareusuallyUTF-8withBOM.I'dliketoconvertthem(ideallyinplace)toUTF-8withnoBOM.Itseemslikecodecs.StreamRecoder(stream,encode,decode,Reader,Writer,errors)wouldhandlethis.ButIdon'treallyseeanygoodexamplesonusage.Wouldthisbethebestwaytohandlethis?
sourcefiles:
TueJan17$filebrh-m-157.json
brh-m-157.json:UTF-8Unicode(withBOM)text
Also,itwouldbeidealifwecouldhandledifferentinputencodingwihtoutexplicitlyknowing(seenASCIIandUTF-16).Itseemslikethisshouldallbefeasible.IsthereasolutionthatcantakeanyknownPythonencodingandoutputasUTF-8withoutBOM?
edit1proposedsol'nfrombelow(thanks!)
fp=open('brh-m-157.json','rw')
s=fp.read()
u=s.decode('utf-8-sig')
s=u.encode('utf-8')
printfp.encoding
fp.write(s)
Thisgivesmethefollowingerror:
IOError:[Errno9]Badfiledescriptor
Newsflash
I'mbeingtoldincommentsthatthemistakeisIopenthefilewithmode'rw'insteadof'r+'/'r+b',soIshouldeventuallyre-editmyquestionandremovethesolvedpart.
解决方案fp=open("file.txt")
s=fp.read()
u=s.decode("utf-8-sig")
ThatgivesyouaunicodestringwithouttheBOM.Youcanthenuse
s=u.encode("utf-8")
togetanormalUTF-8encodedstringbackins.Ifyourfilesarebig,thenyoushouldavoidreadingthemallintomemory.TheBOMissimplythreebytesatthebeginningofthefile,soyoucanusethiscodetostripthemoutofthefile:
importos,sys,codecs
BUFSIZE=4096
BOMLEN=len(codecs.BOM_UTF8)
path=sys.argv[1]
withopen(path,"r+b")asfp:
chunk=fp.read(BUFSIZE)
ifchunk.startswith(codecs.BOM_UTF8):
i=0
chunk=chunk[BOMLEN:]
whilechunk:
fp.seek(i)
fp.write(chunk)
i+=len(chunk)
fp.seek(BOMLEN,os.SEEK_CUR)
chunk=fp.read(BUFSIZE)
fp.seek(-BOMLEN,os.SEEK_CUR)
fp.truncate()
Itopensthefile,readsachunk,andwritesitouttothefile3bytesearlierthanwhereitreadit.Thefileisrewrittenin-place.Aseasiersolutionistowritetheshorterfiletoanewfilelikenewtover'sanswer.Thatwouldbesimpler,butusetwicethediskspaceforashortperiod.
Asforguessingtheencoding,thenyoucanjustloopthroughtheencodingfrommosttoleastspecific:
defdecode(s):
forencodingin"utf-8-sig","utf-16":
try:
returns.decode(encoding)
exceptUnicodeDecodeError:
continue
returns.decode("latin-1")#willalwayswork
AnUTF-16encodedfilewontdecodeasUTF-8,sowetrywithUTF-8first.Ifthatfails,thenwetrywithUTF-16.Finally,weuseLatin-1—thiswillalwaysworksinceall256bytesarelegalvaluesinLatin-1.YoumaywanttoreturnNoneinsteadinthiscasesinceit'sreallyafallbackandyourcodemightwanttohandlethismorecarefully(ifitcan).
weixin_39609483
关注
关注
0
点赞
踩
0
收藏
0
评论
pythonutf8bom,在Python中将没有BOM的UTF-8转换为带有BOM的UTF-8
Twoquestionshere.IhaveasetoffileswhichareusuallyUTF-8withBOM.I'dliketoconvertthem(ideallyinplace)toUTF-8withnoBOM.Itseemslikecodecs.StreamRecoder(stream,encode,decode,...
复制链接
扫一扫
【Python学习】如何将UTF-8编码转换成UTF-8BOM编码?
字节卷动
06-23
1911
一、需求描述
在我之前的博客:
【我的Android进阶之旅】使用TextAnalysisTool来快速提高你分析文本日志的效率
中有介绍下面一个关于中文无法显示的问题,如下所示:
有时候,中文无法正常显示,如下所示都是乱码
这个时候,我们需要借助下NotePad++工具,对整个日志文件进行转码,如下所示
我们发现,此文件用NotePad++打开,可以直接显示中文,
编码格式为UTF-8编码
我们使用快捷键Ctrl+A全选日志内容,选择【编码】–>【使用UTF-8BOM编码】,将
SAPSHD0的详细简介
少年休闲海
06-05
1万+
SHD0的简介,作用是创建交易变式,即主要实现三个功能:
1可设定默认值
2可隐藏字段或设置必输
3隐藏SCREENS
Atransactionvariantisassignedtoonetransaction.Atransactioncanhaveseveralvariants.
以下面两个实际业务为例:
参与评论
您还未登录,请先
登录
后发表或查看评论
PASSION之彻底看清编码
云端小丑
03-16
677
Howdoescomputorhaveencoding?
1,电脑最为底层都是数字电路的集合,电脑只能分辨0和1。
而简单的数字电路的核心就是能分辨某个
电平以上为高电平,而某个电平以下为低电平。
我们将电路认识高电平和低电平的能力,映射到生活
中就是0和1也可以是对和错等等。
当我们将简单的数字电路组成复杂电路的时候,我们就可以通过排
列组合的方式,来...
利用python将文件转换为utf8无BOM
会吃狼的鳄鱼
05-19
6581
如何将一个文件,转换为utf8无BOM的文件呢;这里使用python做了实现
#!/usr/bin/envpython
#-*-coding:utf-8-*-
##########################################################
#Acleverpersonsolvesaproblem.Awisepersonav
python实现将文本格式改为utf-8withoutBom格式
qq_41949211的博客
06-29
1314
在使用niutrans是用自己的数据进行模型训练时翻译失败,原来是双语文件编码问题,前提要将预料文件改成utf-8withoutBom的格式,否则造成训练失败。
f=open(“sourcedata/english.raw.sample.txt”,“rb”)
s=f.read()
ifs.startswith(codecs.BOM_UTF8):
s=s[len(codecs.BOM...
pythonutf8bom_在Python中将带BOM的UTF-8转换为不带BOM的UTF-8
weixin_39747630的博客
12-18
788
fp=open("file.txt")s=fp.read()u=s.decode("utf-8-sig")这给了您一个没有BOM的unicode字符串。
你可以用s=u.encode("utf-8")在s中获取一个普通的UTF-8编码字符串。
如果你的文件很大,那么你应该避免将它们全部读入内存。
BOM只是文件开头的三个字节,因此可以使用此代码将它们从文件中删除:importos,s...
python将utf8无bom格式转化为utf8bom格式
imiss的博客
03-28
1717
#coding=utf8
filename=input("inputfilename:")
f=open(filename,'rb')
content=f.read()
f.close()
temp=content.decode('utf-8')
result=temp.encode('utf-8-sig')
f=open(filename,'wb')
f.wri...
python学习笔记---实现将文件转换编码为utf-8-sig(带BOM)
杨鑫newlife的专栏
09-27
5433
python学习笔记---实现将文件转换编码为utf-8-sig(带BOM)
Python学习笔记:BOM
热门推荐
founderznd
08-13
1万+
windows对于utf-8编码的文件自带BOM,但是其他系统utf-8编码默认不带BOM。
这就造成在某些情况下字符解码会出现问题,比如python自带的json在读取在window下编码得来的utf-8文件时,会报如下错误:
ValueError:NoJSONobjectcouldbedecoded
BOM
FromWikipedia,thef
ConvertUTF-8withBOMtoUTF-8withoutBOMinPython
Nicholas的专栏
07-25
1408
windows对于utf-8编码的文件自带BOM,但是其他系统utf-8编码默认不带BOM。
这就造成在某些情况下字符解码会出现问题,比如python自带的json在读取在window下编码得来的utf-8文件时,会报如下错误:
ValueError:NoJSONobjectcouldbedecoded
方法一:
f=open("data","r")
s=f.rea...
批量去除UTF-8的BOM前缀(python3版)
Hongyu_Zhou的博客
05-18
4381
编译过程中最烦的就是报错\65279这是因为代码中采用了utf-8有bom的编码格式,如果有大量文件有bom,那一个一个的修改成无bom模式是很恼火的,用python可以实现批量转化有bom为无bom,bom其实就是在文件的开头,插入了3bit的bom头\xef\xbb\xbf用python按二进制读取文件,检查开头是否有bom头,如果有就删掉,没有就算了,这样就把有bom的全部替换成无bom...
UTF-8与UTF-8withoutBOM
沐水杉的博客
10-25
3780
UTF-8编码的文件可以分为withoutBOM和BOM两种格式。
何谓BOM?“EFBBBF”这三个字节就叫BOM,BOM的全称叫做"ByteOrderMark".在UTF-8文件中常用BOM来表明这个文件是UTF-8文件,而BOM的本意是在UTF-16中用来表示高低字节序列的。
在字节流之前有BOM表示采用低字节序列(低字节在前面),而UTF-8不用考虑字节序列,所以其实有无B...
关于EncodeinUTF-8withoutBOM
绯浅yousa的笔记
09-30
3664
关于EncodeinUTF-8withoutBOM定义BOM(ByteOrderMark),字节顺序标记,出现在文本文件头部,Unicode编码标准中用于标识文件是采用哪种格式的编码。
介绍UTF-8不需要BOM,尽管Unicode标准允许在UTF-8中使用BOM。
但不含BOM的UTF-8才是标准形式,在UTF-8文件中放置BOM主要是微软的习惯(顺便提一下:
Python学习笔记:ConvertUTF-8withBOMtoUTF-8withoutBOMinPython
liuheng0111的博客
03-01
1221
前言
windows对于utf-8编码的文件自带BOM,但是其他系统utf-8编码默认不带BOM。
这就造成在某些情况下字符解码会出现问题,比如Python自带的json在读取在window下编码得来的utf-8文件时,会报如下错误:
ValueError:NoJSONobjectcouldbedecoded
BOM
FromWikipedia,
UTF8与UTF8withoutBOM之间的问题
dianpin1779的博客
04-11
134
UTF-8编码的文件可以分为noBOM和BOM两种格式。
何谓BOM?"EFBBBF"这三个字节就叫BOM,BOM的全称叫做"ByteOrderMard".在utf-8文件中常用BOM来表明这个文件是UTF-8文件,而BOM的本意实在utf16中用来表示高低字节序列的。
在字节流之前有BOM表示采用低字节序列(低字节在前面),而utf8不用考虑字节序列,所以其实有无B...
python读取utf8文件_python读取带BOM的utf-8格式文件
weixin_39613385的博客
12-10
296
简言:在windows上使用open打开utf-8编码的txt文件时开头会有一个多余的字符它叫BOM,是用来声明编码等信息的,但python会把它当作文本解析解决办法:open的encoding参数forlineinopen('data.txt',encoding='utf-8-sig'):UTF有哪些分类?UTF-8分为两种,一种是不带BOM的,一种是带BOM的。
其中第一种不带BOM的...
LearningPython016写文件时,将其用指定的编码方式保存(比如:UTF-8无BOM编码方式)
AoboSir.com
11-29
1万+
使用的电脑系统:Windows1064位
使用的开发集成环境:PyCharm2016.1.4
使用的Python的版本:python3.5.0
学习这个知识点的原因举一个实例:Octopress站点路径里面博文文件(.markdown后缀文件)必须要是以UTF-8无BOM编码方式编码的文件,否则执行rakegenerate命令会出现下面这个错误:ErrorreadingfileF:/
Python将UTF-8w/BOM转换为UTF-8w/oBOM
最新发布
一叶知秋
03-09
513
importos
defconvert(d):
forfinos.listdir(d):
full=os.path.join(d,f)
ifos.path.isfile(full):
try:
s=open(full,mode='r',encoding='utf-8-sig').read()
open(full,mode='w',encoding='
python检测文件编码是否是utf-8无bom
网络安全领域优质创作者
06-04
3081
代码如下:#!/usr/bin/envpython
#-*-coding:utf-8-*-
#2018/05/31检测文件是否是utf-8无bom格式的
importsys,codecs
defdetectUTF8(file_name):
state=0
line_num=0
file_obj=open(file_name)
all...
“相关推荐”对你有帮助么?
非常没帮助
没帮助
一般
有帮助
非常有帮助
提交
©️2022CSDN
皮肤主题:1024
设计师:我叫白小胖
返回首页
weixin_39609483
CSDN认证博客专家
CSDN认证企业博客
码龄5年
暂无认证
137
原创
-
周排名
190万+
总排名
14万+
访问
等级
189
积分
17
粉丝
16
获赞
0
评论
105
收藏
私信
关注
热门文章
autocad2006许可系统出现错误_revit常见安装(错误)解决办法
6836
html网页有内容不能向下拉,为什么百度页面不能往下拉
3919
spring源码深度解析_Spring的底层源码解析
3771
打印机更换感光鼓单元k_感光鼓更换技法_维修技术
3561
键盘映射软件_精挑细选的四款黑科技软件,每一款都值得你去使用
3391
您愿意向朋友推荐“博客详情页”吗?
强烈不推荐
不推荐
一般般
推荐
强烈推荐
提交
最新文章
华为云服务器怎么操作系统,服务器怎么操作系统
jupyter显示启动服务器失败,无法启动jupyter
单位文档服务器,单位存储服务器
2021年136篇
2020年218篇
目录
目录
最新文章
华为云服务器怎么操作系统,服务器怎么操作系统
jupyter显示启动服务器失败,无法启动jupyter
单位文档服务器,单位存储服务器
2021年136篇
2020年218篇
目录
评论
被折叠的 条评论
为什么被折叠?
到【灌水乐园】发言
查看更多评论
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额
0
抵扣说明:
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。
余额充值
延伸文章資訊
- 1Why Python 3 doesn't write the Unicode BOM - Peter Bloomfield
According to the Python documentation on reading and writing Unicode data: Some encodings, such a...
- 2在Python中將帶BOM的UTF - 程式人生
我想將它們(理想情況下)轉換為沒有BOM的UTF-8。似乎 codecs.StreamRecoder(stream, encode, decode, Reader, Writer, errors...
- 3Adding BOM (unicode signature) while saving file in python
My method of adding BOM is by writing ansi characters '" at the beginning of the file, then op...
- 4[python] 解決生成csv file編碼問題(with BOM) - JysBlog
當我們使用UTF-8生成csv時,並未在header生成BOM訊息,所以Excel會依照Unicode編碼讀取,就會有亂碼產生。 實作. 下面是簡單的生成csv的python程式:.
- 5utf-16le[BOM] to utf-8 file solution - GitHub
http://stackoverflow.com/questions/22459020/python-decode-utf-16-file-with-bom. import codecs. en...