Проблемы с MSI DB, Visual Basic и cp1252 в кодированной строке - PullRequest
1 голос
/ 22 августа 2011

У меня есть такая строка кода (сгенерированная MakeMSI)

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

oRec - это запись из базы данных Msi, открытая с помощью:

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

После выполнения и фиксации строки "Publicitaraplicação "преобразуется в" Publicitar a aplicaçao "(ã преобразуется в) в базе данных.Я на 100% уверен, что база данных закодирована в cp1252, так как, когда я редактирую поле вручную и вставляю, он хорошо отображается.Любые идеи, как обойти это?

РЕДАКТИРОВАТЬ: При сборке установщика на португальской Windows все в порядке

1 Ответ

0 голосов
/ 22 августа 2011

Какая кодовая страница компьютера, на котором вы редактируете свойство?

Я не знаю, использует ли VBA Юникод для хранения строк или нет. Если это так, то он должен работать на любом компьютере; в противном случае он должен работать правильно только в том случае, если системная кодовая страница поддерживает page ã ’.

Таким образом, другая часть проблемы - это сам исходный файл: чтобы он работал должным образом, он должен быть с поддержкой Unicode (UTF-8 или UTF-16), и интерпретатор должен справиться с этим. В противном случае вы получите неожиданные результаты, если текущая кодовая страница не совместима с cp1252.

Проверьте настройку для Язык для программ, не поддерживающих Юникод в региональных настройках Windows. Должен быть установлен португальский.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...