好吧,我现在感觉有点失落。我对 unicode(或 utf-8 ?)有一些问题
我在 linux 上使用 Python3.3(但我在 windows 上也有同样的问题)。
我尝试使用 Elementtree 创建一个 XML 文件。
item = ET.Element("item")
item_title = Et.SubElement(item, "title")
这当然不是全部,只是一个例子。所以现在我想让标签'title'有这样的文本(用随机内容替换##Content##,没关系):
# Thats how I create the text for the tag
item.title.text = u'<![CDATA[##CONTENT##]>'
# This is how I want it to look like
<title><![CDATA[##CONTENT##]></title>
# Thats what I get
<title><![CDATA[##CONTENT##]></title>
# These are some of the things I tried for writing it to an xml file
ET.ElementTree(item).write(myOutputFile, encoding="unicode")
myOutputFile.write(ET.tostring(item, encoding='unicode', method='xml')))
myOutputFile.write(str(ET.tostring(item, encoding='utf-8', method='xml')))
myOutputFile.write(str(ET.tostring(item)
# Oh and thats how I open the file for writing
myOutputFile = codecs.open(HereIsMyFile, 'w', encoding='utf-8')
我尝试搜索并发现了一些类似的听起来问题(我尝试过的一些东西已经来自 SO),但似乎没有一个有效。他们更改了输出中的一些内容,但从未显示 < 或 >。我还注意到,如果我使用 utf-8,我必须在写入文件时使用 str()。这也让我对 unicode 和 utf-8 的区别感到困惑,我试图阅读一些关于它的东西,但这并没有真正帮助我解决我的实际问题。
在这一点上,我真的不知道在哪里寻找我的错误,我希望在哪里寻找提示。这是我写入文件的方式吗?我怎么打开它?还是 Elementtree 导致了错误?(我没有尝试其他的东西,比如 lxml,因为嗯,这意味着我猜要重写很多东西)。
我希望你能帮助我,如果有什么不清楚的地方,我会试着解释得更好一点!
编辑:哦,我也尝试在没有编解码器的情况下打开文件,因为我在某处读到它在 Python3.x 中不再需要,但我不再那么确定了,所以我试了一下。