【发布时间】:2011-03-02 00:21:37
【问题描述】:
我正在尝试解析 UTF-8 XML 文件并将其中的某些部分保存到另一个文件中。问题是,这是我的第一个 Python 脚本,我对我发现的字符编码问题完全感到困惑。
我的脚本在尝试将非 ascii 字符写入文件时立即失败,但它可以将其打印到命令提示符(至少在某种程度上)
这是 XML(至少从重要的部分来看,它是一个包含 UI 字符串的 *.resx 文件)
<?xml version="1.0" encoding="utf-8"?>
<root>
<resheader name="foo">
<value>bar</value>
</resheader>
<data name="lorem" xml:space="preserve">
<value>ipsum öä</value>
</data>
</root>
这是我的python脚本
from xml.dom.minidom import parse
names = []
values = []
def getStrings(path):
dom = parse(path)
data = dom.getElementsByTagName("data")
for i in range(len(data)):
name = data[i].getAttribute("name")
names.append(name)
value = data[i].getElementsByTagName("value")
values.append(value[0].firstChild.nodeValue.encode("utf-8"))
def writeToFile():
with open("uiStrings-fi.py", "w") as f:
for i in range(len(names)):
line = names[i] + '="'+ values[i] + '"' #varName='varValue'
f.write(line)
f.write("\n")
getStrings("ResourceFile.fi-FI.resx")
writeToFile()
这是回溯:
回溯(最近一次通话最后): 文件“GenerateLanguageFiles.py”,第 24 行,在 写入文件() 文件“GenerateLanguageFiles.py”,第 19 行,在 writeToFile 行 = 名称[i] + '="'+ 值[i] + '"' #varName='varValue' UnicodeDecodeError:“ascii”编解码器无法解码位置 2 中的字节 0xc3:序数不在运行中 葛(128)我应该如何修复我的脚本,以便它可以正确读取和写入 UTF-8 字符?我尝试生成的文件将用于 Robots Framework 的测试自动化。
【问题讨论】: