当前位置: 首页 > 面试题库 >

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

段哲圣
2023-03-14
问题内容

我们有一个数据输入人员,他在Windows上使用UTF-16编码,并且希望拥有utf-8并删除BOM。utf-8转换有效,但BOM仍然存在。我将如何删除?这是我目前拥有的:

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)

如果我使用hexdump -CI,请参阅:

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-|

在结果文件中。如何删除物料清单?

谢谢


问题答案:

只需使用str.decodestr.encode

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 将为您摆脱BOM表(并推断出字节序)。



 类似资料:
  • 问题内容: 一直以来都忽略了它,我目前正在强迫自己学习有关Java中的unicode的更多信息。我需要做一个关于将UTF-16字符串转换为8位ASCII的练习。有人可以启发我如何用Java做到这一点吗?我知道您无法用ASCII表示所有可能的unicode值,因此在这种情况下,无论如何我都希望仅添加超过0xFF的代码(坏数据也应该仅以静默方式添加)。 谢谢! 问题答案: 这个怎么样: 对于大型字符串

  • 我试图保存一个字符串在希伯来文文件,同时有文件ANSI编码。恐怕所有的尝试都失败了。 PHP文件本身是UTF-8 这是我正在尝试的代码: 由于某种原因,返回false。 另一次尝试是: 这返回一个空字符串。当这不起作用时,将输出字符集更改为Windows-1255的工作。所以函数本身工作,但由于某种原因,它不转换为1252。 我运行这个函数之前和之后的和打印的结果 在图标之前编码是UTF-8,在图

  • 返回指定UTF-8字符串的16进制表示。 调用: web3.utils.utf8ToHex(string) web3.utils.stringToHex(string) // 别名 web3.utils.fromUtf8(string) // 别名,已弃用 参数: string - String: ·UTF-8字符串 返回值: String: 16进制字符串 示例代码: web3.utils.u

  • 返回指定16进制值的UTF-8字符串表示。 调用: web3.utils.hexToUtf8(hex) web3.utils.hexToString(hex) // 别名 web3.utils.toUtf8(hex) // 别名,已弃用 参数: hex - String: 16进制字符串 返回值: String: UTF-8字符串 示例代码: web3.utils.hexToUtf8('0x49

  • 嗨,我在Python中将utf-8 json转换成unicode escape json时遇到了一些问题 我知道如何将utf-8.txt转换为unicodeescape.txt 但是,我在Python中使用json模块时遇到了上面应用的问题,如下所示 它保存得很好,但是,当涉及到json中的双引号(“)时,它会自动添加双反斜杠(\\),因此unicode-esc.json文件在调用python脚本

  • 问题内容: 从我的数据库即时通讯获取以下字符串: 它应该说的是: 我试图像这样将其转换为utf-8: 但是仍然是同样的问题。 有任何想法吗? 问题答案: 使用npm中的utf8模块对字符串进行编码/解码。 安装: 在浏览器中: 在Node.js中: API: 编码: 将任何给定的JavaScript字符串(字符串)编码为UTF-8,并返回该字符串的UTF-8编码版本。如果输入字符串包含非标量值(即