【发布时间】:2017-09-25 21:19:04
【问题描述】:
我目前有一堆 XML 文件,不幸的是,我们的脚本创建了一个字符代码错误的字段。
<App_Data App="x" Name="Medium" Value="Forjado e apoiado pela máquina de propaganda, foi o mito do profeta que tinha aparentemente vindo do nada para fazer história. A verdadeira história de sua família não tinha lugar nesta imagem..." />
<App_Data App="x" Name="Short" Value="Forjado e apoiado pela máquina de propaganda, foi o mito do profeta que tinha aparentemente vindo do nada para fazer história. A verdadeira história de sua famÃlia não tinha lugar nesta imagem..." />
我的一些文件是正确的,所以我必须一个一个地打开才能决定是否使用该脚本,我认为脚本中不需要高度自动化来验证转换的需要。
我只是想出了下面的脚本,实际上是网络上的代码拼凑而成......
texto = editor.findText(FINDOPTION.WHOLEWORD | FINDOPTION.MATCHCASE, 0, editor.getLength(), "Short")
pos = editor.gotoPos(texto[0])
ISOLine = editor.lineCopy()
editor.addText(ISOLine.encode('utf8'))
firstLine = editor.getLine(0)
firstLineUnicode = firstLine.decode('latin-1')
editor.replaceWholeLine(firstLineUnicode.encode('latin-1')
Editor.paste()
...但它不起作用。我似乎无法选择整行并将其与变量相关联,但由于我是新手,以后可能会遇到更多问题。
XML 文件采用 ISO-8859-1 字符代码,但该部分似乎来自 UTF-8 源,并且字符仅被解释为 ISO-8859-1,而不是转换。
我可以手动修复它,方法是复制整行,在 Notepad++ 中以 ISO-8859-1 创建一个新文件,粘贴该行,然后使用菜单“格式 > UTF-8 编码”使其看起来正确.然后我可以选择它并复制回原始 XML 文件。
但这不是很实用,所以我想知道是否有更好的 Python 脚本方法。
【问题讨论】:
-
我没有回答你的问题。但是关于你在哪里说:“我的一些文件是正确的,所以我必须一个一个地打开才能决定是否使用脚本”,我认为只在你所有的文件上运行脚本是安全的文件。您无需检查它们是否需要修复;解决您的问题的脚本不应最终实际更改已经正确的文件。 (当然,你应该先测试一下,以确保。)
-
@Sweater-Baron 谢谢,但如果我在该特定行中有一些具有正确字符代码的文件,脚本也会更改它,从而在解决其他问题的同时产生问题。
-
尝试在 Notepad++ 中在已经正确的行上执行“以 UTF-8 编码”的操作。我怀疑它不会改变它。
标签: python xml utf-8 notepad++ iso-8859-1