【发布时间】:2016-11-23 13:40:15
【问题描述】:
我正在尝试使用数据 -> 其他来源 -> 从 XML 数据导入将 XML 文件导入 excel。当文件包含“µ”符号时,会出现以下错误:
文件引用无效。文件的路径无效,或者一个或一个 找不到更多引用的架构。
XML 如下所示:
<root>
<File>
<FileName>Data\7.5 µg_mL Sample.pdf</FileName>
</File>
</root>
如果我删除微克符号,它会起作用并且 Excel 会导入数据。
我正在使用XNode.toString() 在 .net 中生成 XML 文件,如果我通过验证器运行 XML,它不会返回任何错误。我是否将 XML 声明放在文件顶部并将其声明为 UTF-8 或 16 似乎都没有关系。
欢迎任何指针,理想情况下,我想检查可能导致此问题的任何字符,因为我猜不仅仅是微克符号。
我将 XML 字符串传递给一个交换自定义 xml 文件的函数,我似乎没有在此处更改文件格式的选项..
'Uses Ionic.Zip.ZipFile
Using zip As ZipFile = ZipFile.Read(fileDest)
zip.RemoveEntry(xmlPath)
zip.Save()
zip.AddEntry(xmlPath, customXml)
zip.Save()
End Using
【问题讨论】:
-
你能展示创建这个文件的代码吗?我做了一个快速测试,如果你将该文件保存为 ANSI 编码,那么你会得到错误。如果您保存为 UTF-8,它似乎工作正常。我假设第一个被猜测为没有 BOM 的 UTF-8 并且在无效字符上失败。
-
为什么不使用
XDocument.Save和XmlWriter,在其设置中将编码设置为UTF8?这有点类似于@CharlesMager 指出的。 -
我正在使用 Ionic.Zip.ZipFile 删除 zip 文件中的 xml 文件并用新文件替换它,我现在将在帖子底部弹出该代码
-
如果您启动
notepad.exe,然后选择“打开”,在“打开”对话框中导航到有问题的 XML 文件,而不实际离开“打开”对话框窗口,“编码”是什么建议在窗口底部?您也可以询问 Visual Studio(打开 XML 文件时的“文件 - 高级保存选项”)。 -
还要注意有两个不同的Unicode码位,通常的希腊字母是U+03BC(μ),但是,由于历史原因,也有U+00B5(μ)的一部分拉丁语 1(以及相关的
Encoding.GetEncoding("Windows-1252"))。