【问题标题】:XML unexpected charactersXML 意外字符
【发布时间】:2017-08-28 07:12:39
【问题描述】:

我有一个 XML 文件,我使用 Excel 宏通过连接字符串来创建它。

与代码的串联是这样的:

xmlText = "<?xml version=""1.0"" encoding=""UTF-8""?>" + vbCrLf

文件的最终创建是这样的代码:

Dim fso As Object
strPath = "C:\"
Set fso = CreateObject("ADODB.Stream")
fso.Type = 2 'Specify stream type - we want To save text/string data.
fso.Charset = "utf-8" 'Specify charset For the source text data.    
fso.Open
' Write to file
fso.WriteText xmlText
fso.SaveToFile strPath, 2    
Set fso = Nothing

我面临的问题是不知何故插入了不需要的字符,但我无法在普通编辑器中看到它们,只有当我使用 HEX 编辑器检查时。

使用普通编辑器,我看到以下内容:

使用 HEX 编辑器,我看到以下内容:

正如您在图片中看到的那样,我在普通编辑器中看不到字符“”。

我怎样才能摆脱这些意想不到的字符?

我尝试按照评论中的建议通过更改以下代码将其更改为 UTF16:

fso.Charset = "utf-16"

xmlText = "<?xml version=""1.0"" encoding=""UTF-16""?>" + vbCrLf

HEX 编辑器中的结果是这样的:

之前好像还有奇怪的字符

【问题讨论】:

  • 您是否在 XML 数据中使用了任何特殊字符?
  • 是的,我在 XML 文本中有以下我需要的城市名称:Dobříš
  • 嗯...不确定,但如果您的相同代码在没有该名称的情况下也可以工作,那么名称就是问题所在。简单的解决方案是移至 utf-16。为符号添加额外的存储空间。
  • utf-16 似乎让情况变得更糟。我已经编辑了上面的问题以显示结果。
  • 我尝试将 XML 正文中的特殊字符从 Dobříš 替换为 Dobris,但没有任何区别。 HEX编辑器中的奇怪字符仍然出现

标签: xml excel vba text-editor


【解决方案1】:

我设法用 alj 的 this 页面中的解决方案对其进行了排序。

我最初认为问题的解决方法如下:

xmlText = ""
xmlText = xmlText & "<?xml version=""1.0"" encoding=""UTF-8""?>" + vbCrLf

在 HEX 中打开 Notepad ++ 时,我可以看到字符消失了,但在关闭并重新打开文件后,字符又出现了。

无论如何,现在删除 BOM 似乎对我有用。

【讨论】:

    猜你喜欢
    • 2017-06-13
    • 1970-01-01
    • 1970-01-01
    • 2020-07-22
    • 2012-03-30
    • 2014-09-08
    • 2012-09-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多