MSI DB, Visual Basic和cp1252编码字符串问题



我有这样一行代码(由MakeMSI生成)

oRec.StringData(2) = "A publicitar a aplicação"

oRec是来自Msi数据库的记录,用:

oInstaller = MkObject("WindowsInstaller.Installer")
oMsi = oInstaller.OpenDatabase(MsiName, msiOpenDatabaseModeDirect)
oMsi.OpenView(selectQuery)

执行并提交字符串"A publicitar A applicicao"后转换为数据库中的"A publicitar A applicicaao"(ã转换为A)。我100%肯定数据库是cp1252编码的,因为当我手动编辑字段并插入ã时,它显示得很好。有什么办法吗?

编辑:当在葡萄牙Windows上构建安装程序时,一切都很好

编辑属性的计算机的代码页是什么?

我不知道VBA内部是否使用Unicode来存储字符串。如果可以,那么它应该可以在任何计算机上工作;如果没有,那么它应该只有在系统代码页支持' ã '的地方才能正常工作。

所以问题的另一部分是源文件本身:要像预期的那样工作,它应该启用unicode (UTF-8或UTF-16),并且解释器应该处理它。否则,您将得到意想不到的结果,即当前代码页与cp1252不兼容。

检查Windows中的区域设置中语言的非unicode程序设置。

最新更新