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

时间:2011-08-22 13:38:42

标签: vba character-encoding windows-installer

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

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

oRec是来自Msi数据库的记录,打开时为:

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

执行并提交字符串“A publicitaraaplicação”在数据库中转换为“A publicitaraaplicaçao”(ã转换为a)。我100%肯定数据库是cp1252编码,因为当我编辑字段manualy并插入ã它显示良好。任何想法如何解决这个问题?

编辑: 在Portugese Windows上构建安装程序时,一切都很好

1 个答案:

答案 0 :(得分:0)

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

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

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

在Windows的区域设置中检查非Unicode程序的语言的设置。它应该设置为葡萄牙语。