VBA无法创建UTF-8 XML。
VBA无法创建UTF-8 XML的问题出现的原因是VBA默认使用的是ANSI编码,而不是UTF-8编码。解决这个问题的方法是通过使用ADODB.Stream对象来创建XML文件,并设置其字符集为UTF-8。
以下是解决方法的具体代码:
Dim fsT As Object Set fsT = CreateObject("ADODB.Stream") fsT.Type = 2 '指定流的类型为文本/字符串数据 fsT.Charset = "utf-8" '指定源文本数据的字符集为UTF-8 fsT.Open '打开流并将二进制数据写入对象 fsT.WriteText "special characters: äöüß" fsT.SaveToFile sFileName, 2 '将二进制数据保存到磁盘
上述代码通过创建一个ADODB.Stream对象,设置其类型为2(文本/字符串数据),并将字符集设置为UTF-8。然后,通过调用WriteText方法将文本数据写入流中,并调用SaveToFile方法将二进制数据保存到磁盘上的文件中。
如果想要保存为UTF-16编码,只需将代码中的"utf-8"改为"utf-16"即可。
在尝试上述代码后,可能会发现保存的文件内容变成了乱码(例如:special characters: äöüß)。这可能是由于文本编辑器的编码设置不正确导致的。请确保使用正确的编码打开文件,特别是避免使用记事本编辑器。可以尝试使用其他支持UTF-8编码的文本编辑器来打开文件。
此外,根据地区设置的不同,可能无法在字符串字面量中直接使用特殊字符。可以参考相关问题:vba - How to type currency symbols in Visual Basic Editor - Stack Overflow。