首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >是否将UTF-16转换为UTF-8并删除BOM?

是否将UTF-16转换为UTF-8并删除BOM?
EN

Stack Overflow用户
提问于 2012-01-12 06:09:18
回答 1查看 31.3K关注 0票数 25

我们有一个数据录入人谁在Windows上的UTF-16编码,并希望有utf-8和删除BOM。utf-8转换可以正常工作,但BOM仍然存在。我该如何删除它?这是我目前所拥有的:

代码语言:javascript
复制
batch_3={'src':'/Users/jt/src','dest':'/Users/jt/dest/'}
batches=[batch_3]

for b in batches:
  s_files=os.listdir(b['src'])
  for file_name in s_files:
    ff_name = os.path.join(b['src'], file_name)  
    if (os.path.isfile(ff_name) and ff_name.endswith('.json')):
      print ff_name
      target_file_name=os.path.join(b['dest'], file_name)
      BLOCKSIZE = 1048576
      with codecs.open(ff_name, "r", "utf-16-le") as source_file:
        with codecs.open(target_file_name, "w+", "utf-8") as target_file:
          while True:
            contents = source_file.read(BLOCKSIZE)
            if not contents:
              break
            target_file.write(contents)

如果我使用十六进制转储-C,我会看到:

代码语言:javascript
复制
Wed Jan 11$ hexdump -C svy-m-317.json 
00000000  ef bb bf 7b 0d 0a 20 20  20 20 22 6e 61 6d 65 22  |...{..    "name"|
00000010  3a 22 53 61 76 6f 72 79  20 4d 61 6c 69 62 75 2d  |:"Savory Malibu-|

在生成的文件中。如何删除BOM表?

thx

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-01-12 06:17:21

只需使用str.decodestr.encode即可

代码语言:javascript
复制
with open(ff_name, 'rb') as source_file:
  with open(target_file_name, 'w+b') as dest_file:
    contents = source_file.read()
    dest_file.write(contents.decode('utf-16').encode('utf-8'))

str.decode将为您去除物料清单(并推导出字节顺序)。

票数 26
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8827419

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档