В настоящее время я пытаюсь улучшить работу программы чтения с экрана с Бекки! Интернет-почта . Проблема, с которой я сталкиваюсь, связана с представлением списка там. Этот элемент управления не поддерживает Unicode, но элементы отображаются на экране, поэтому, когда кто-то просматривает его, содержимое всех полей независимо от кодировки выглядит нормально. Однако при доступе через MSAA или UIA базовые символы и письма ANSI, закодированные с помощью кодовой страницы, заданной для программ, не поддерживающих Unicode, имеют правильный текст, тогда как письма, закодированные в Unicode, не имеют. Например, текст
Zażółć gęślą jaźń
представлен как:
ZaĹĽĂłĹ‚Ä ‡ gÄ ™ Ĺ ›lÄ… jaźń
Кажется, чтодолжна быть возможность перекодировать его из широких символов в системное кодирование с использованием WideCharToMultiByte, но перед попыткой этого я хотел бы спросить, возможно ли это в чистом Python?
Решение должно работать как в Python 2, так и в 3. .
В настоящий момент я просто заменяю известные комбинации этих символов их соответствующими представлениями, но это не очень хорошее решение, поскольку списки, содержащие замены и заменяемые символы, необходимо обновлять с каждым новым обнаруженным символом.