繁体   English   中英

使用BOM写入UTF-16-LE文本文件

[英]Writing to UTF-16-LE text file with BOM

我已经阅读了一些关于Python写入文本文件的帖子,但我找不到解决问题的方法。 简而言之,这就是它。

要求:将由刺字符(u00FE;和文本值覆盖)和pilcrow字符(u00B6;每列之后)分隔的值写入带有BOM(FF FE)的UTF-16LE文本文件。

问题:写入文本文件在我没有编写脚本的每列之间有空格。 而且,它在UltraEdit中没有显示出来。 只显示第一个值(“妈妈”)。 我欢迎任何见解或建议。

该脚本(简化为简化故障排除;实际脚本使用第三方API获取值列表):

import os
import codecs
import shutil
import sys
import codecs

first = u''
textdel = u'\u00FE'.encode('utf_16_le')   #thorn
fielddel = u'\u00B6'.encode('utf_16_le')  #pilcrow
list1 = ['mom', 'dad', 'son']
num = len(list1)  #pretend this is from the metadata profile

f = codecs.open('c:/myFile.txt', 'w', 'utf_16_le')
f.write(u'\uFEFF')
for item in list1:
  mytext2 = u''
  i = 0
  i = i + 1
  mytext2 = mytext2 + item + textdel
  if i < (num - 1):
    mytext2 = mytext2 + fielddel
  f.write(mytext2 + u'\n')

f.close()

你是对你的字符串进行双重编码。 您已经将文件打开为UTF-16-LE,因此请将textdelfielddel字符串保留为未编码状态。 它们将在写入时编码,并且每行都写入文件。

换句话说, textdel = u'\þ'textdel设置为“刺”字符,而textdel = u'\þ'.encode('utf-16-le')textdel设置textdel字符的特定序列化形式,根据该编解码器的字节序列; 它不再是一系列字符

textdel = u'\u00FE'
len(textdel)                      # -> 1
type(textdel)                     # -> unicode
len(textdel.encode('utf-16-le'))  # -> 2
type(textdel.encode('utf-16-le')) # -> str

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM