У меня есть таблица MySQL с текстовым полем.Он содержит гиперссылку и кодируется в utf8 (utf8-unicode-ci collation).Я хочу открыть гиперссылку программно из VBA.
Текстовое поле может содержать символы типа «őűö», которых нет в западной европейской кодовой странице (1252), но доступно в центральной европейской (1250).
Моей первой попыткой было запуститьпроходной запрос, считайте значение поля в строку VBA и откройте его с помощью Application.Followhyperlink.Он работает, когда языковой стандарт Windows - кодовая страница по умолчанию для приложений, не поддерживающих Юникод, в региональных настройках - является венгерским (используется кодовая страница 1250), и не работает, когда языковой стандарт системы - немецкий (использует кодовую страницу 1252).Строка VBA содержит значение, преобразованное в кодовую страницу, указанную системным языком.Таким образом, «C: \ tükörtűrő» будет читаться как «C: \ tukorturo».
Мне не разрешено исправлять локаль системы на 100+ компьютерах.Итак, как это сделать правильно?
Редактировать:
Извлеченные уроки:
* Debug.Print не поддерживает Unicode - как сказал Эрик фон Асмут.Отображаемый текст в окне отладки вводит в заблуждение.
* Application.FollowHyperlink может обрабатывать Unicode.
* Настоящая проблема заключалась в проверке работоспособности ссылки непосредственно перед открытием ссылки, где я использовал встроенный GetAttr (),что зависит от настроек локали системы.Я заменил его на GetFileAttributesW (), теперь все работает.Некоторая заслуга идет здесь, чтобы Бонни Уэст.(https://www.planet -source-code.com / vb / scripts / ShowCode.asp? TxtCodeId = 74264 & lngWId = 1 )