我有这段代码
Dim doc As XDocument = New XDocument( _
New XDeclaration("1.0", "utf-8", "yes"), _
New XElement("transaction", _
New XElement("realm", wcRealm), _
New XElement("password", wcPassword), _
New XElement("confirmation_email", wcConfEmail), _
New XElement("force_subscribe", wcSubscribe), _
New XElement("optout", wcOptOut), _
New XElement("command", _
New XElement("type", wcType), _
New XElement("list_id", wcListId), _
From trans As DataRow In table.Rows _
Order By trans("last") _
Select New XElement("record", _
New XElement("email", trans("email")), _
New XElement("first", trans("first")), _
New XElement("last", trans("last")), _
New XElement("company", trans("company")), _
New XElement("address_1", trans("address_1")), _
New XElement("address_2", ""), _
New XElement("city", trans("city")), _
New XElement("state", trans("state")), _
New XElement("zip", trans("zip")), _
New XElement("country", trans("country")), _
New XElement("phone", trans("phone")), _
New XElement("fax", trans("fax")), _
New XElement("custom_source", trans("source")), _
New XElement("custom_vmail_expire_date", "")))))
'' # Save XML document at root.
doc.Save("c:\vj" & saveDate & ".xml")
工作正常a产生正确的XML文件但我通过验证器运行它并得到此错误。
抱歉,我无法验证此文档,因为在第1行它包含一个或多个我无法解释为us-ascii的字节(换句话说,找到的字节在指定的字符编码中不是有效值)。请检查文件内容和字符编码指示。
错误是:ascii“\ xEF”未映射到Unicode
可能导致什么?
答案 0 :(得分:3)
问题是您有一个尝试验证为ASCII的UTF-8文件。这两个字节是unicode标头。
答案 1 :(得分:1)
验证器不支持UTF8 / UCS-2。将文件保存为ascii(将破坏,因为xml表示它是utf-8)或找到在过去5年内创建的验证器。
修改强>:
注意:如果您想将其另存为US Ascii,请使用new XDeclaration("1.0", "us-ascii", "yes")
答案 2 :(得分:0)
文件保存为UTF-8,开头有字节顺序标记字符(此字符以八位字节0xEF开头)。
由于某些原因你的验证器似乎不喜欢这个角色。严格地说,这个字符是空格,在XML声明之前有空格是无效的。但是,我所知道的大多数解析器都会将其作为unicode编码的指示器而不是将其视为内容。