gpt4 book ai didi

vba - VBA 内置文件操作使用哪种字符串编码?

转载 作者:行者123 更新时间:2023-12-01 11:22:47 28 4
gpt4 key购买 nike

例子:

Open "C:\...\someFile.txt" For Output As #1
Print #1, someString
Close #1

如果 someString 包含非 ASCII 字符,它们是如何编码的? (UTF-8、Latin-1、一些代码页取决于 Windows 语言环境,...)

在我的系统上,上面的代码似乎使用了 Windows-1252,但是因为 Open statement 的文档都没有也没有 Print # statement 的文档提到字符串编码,我无法确定这是某些内置默认设置还是某些系统设置,我正在寻找权威答案。

注意:感谢大家建议如何使用特定编码(ADODB.Stream、Scripting.FileSystemObject 等)创建文件的替代方案 - 他们很感激。然而,这个问题是关于理解遗留代码的确切行为,所以我只对上面引用的代码的行为感兴趣。

最佳答案

测试表明 VBA Print命令将 Unicode 字符串转换为当前 Windows“非 Unicode 程序语言”系统区域设置的代码页的单字节字符集。这可以用下面的代码来说明,它试图写出希腊字 Ώπα :

Option Compare Database
Option Explicit

Sub GreekTest()
Dim someString As String
someString = ChrW(&H38F) & ChrW(&H3C0) & ChrW(&H3B1)
Open "C:\Users\Gord\Desktop\someFile.txt" For Output As #1
Print #1, someString
Close #1
End Sub

在 Windows 设置为美国英语的默认语言环境的情况下运行时,生成的文件包含字节

3F 70 61

对应于 Windows-1252 字符 ?pa . Windows-1252 是最常(但错误地)称为“ANSI”的字符集。

但是,在将 Windows“非 Unicode”区域设置更改为希腊语(希腊)后

Greek.png

相同的 VBA 代码写入一个包含字节的文件

BF F0 E1

对应于 Windows-1253(希腊语)字符 Ώπα .

关于vba - VBA 内置文件操作使用哪种字符串编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40376951/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com