【发布时间】:2020-12-10 19:20:46
【问题描述】:
我写了一个测试应用程序修改了几百个xml,基本上我修改了几个节点,然后再次保存xml。
输入 XML 文件是 UTF-8-BOM,但输出是 UTF-8(在 Notepad++ 中查看)。
代码在 VB.NET 4.7.2 的控制台应用程序上运行,这是我的基本代码:
Dim myXML As XmlDocument = New XmlDocument
Dim nodelist As XmlNodeList
Dim node As XmlNode
myXML.Load(file)
nodelist = myXML.SelectNodes("//root/row")
For Each node In nodelist
'All my code goes here
Next
myXML.Save(file)
我尝试过这样的事情:
myXML.CreateXmlDeclaration("1.0", "UTF-16", "")
但这没有用。我一直在搜索,似乎每个人都有完全相反的问题,并且在 MSDOC 中检查我看不到任何指定 BOM 的参考:
https://docs.microsoft.com/en-us/dotnet/api/system.xml.xmldeclaration.encoding?view=netframework-4.7
问题是,当文件在没有 BOM 的情况下导入数据库时,某些字符会显示损坏,所以我真的需要相同的编码。
读了这么多之后,我可以尝试使用StreamWriter 而不是XMLDocument 重写我的应用程序,但如果有解决方法,我会更喜欢它:)。谢谢!
【问题讨论】:
-
输入文件是否显示字符损坏?你能用 BOM 名称显示输入文件的声明吗? DB中字段的编码是一样的吗?
-
检查this answer(似乎与您的问题相反,所以使用
New XmlTextWriter(file, New UTF8Encoding(True)))
标签: vb.net encoding utf-8 byte-order-mark