VBA无法创建UTF-8 XML。

25 浏览
0 Comments

VBA无法创建UTF-8 XML。

如何在VBA中将UTF-8编码的字符串写入文本文件,例如:

Dim fnum As Integer
fnum = FreeFile
Open "myfile.txt" For Output As fnum
Print #fnum, "特殊字符:äöüß" '默认为Latin-1或其他
Close fnum

在应用程序级别上是否有一些设置?

0
0 Comments

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

0