Какая схема используется для кодирования символов Юникода в ярлыке .url? - PullRequest
0 голосов
/ 29 октября 2019

Какая схема используется для кодирования символов Юникода в ярлыке URL-адреса Windows?

Например, новый ярлык для URL "http://Ψαℕ℧▶" создает файл .url с текстом:


[{000214A0-0000-0000-C000-000000000046}]

Prop3 = 19,2

[InternetShortcut]

IDList =

URL = http: //? AN ?? /

[InternetShortcut.A]

URL = http: //? AN ?? /

[InternetShortcut.W]

URL = http://+A6gDsSEVIScltg - /


Что такое алгоритм декодирования "+ A6gDsSEVIScltg- "to" Ψαℕ℧ ▶ "?

Я не спрашиваю код API, но мне хотелось бы узнать подробности схемы кодирования.

Примечание. Схема кодирования не является utf-8, ни utf-16, ни ucs-2, ни кодировка%.

Ответы [ 2 ]

1 голос
/ 30 октября 2019

+A6gDsSEVIScltg- - это UTF-7 закодированная форма Ψαℕ℧▶.

правильный способ обработки .url файл должен использовать интерфейсы IUniformResourceLocator и IPropertyStorage из COM-объекта CLSID_InternetShortcut. Подробнее см. Ярлыки Интернета на MSDN.

0 голосов
/ 04 ноября 2019

Ответ (utf-7) позволил мне успешно разработать процедуру преобразования URL-адресов.

Позвольте мне суммировать шаги:

Чтобы получить URL-адрес Юникода из InternetShortcut.W, найденного в.url файл.

. Передайте символы ascii до конца, сделав их безопасными в Интернете.

. Ни один из экранированных символов + не запускает последовательность в формате unicode, отформатированную в utf-7:

. Соберите 6-битные кусочки из кода base64 ascii

. Для собранных 16 битов конвертируйте 16 бит в utf-8 (1,2 или 3 символа)

. Передайте сгенерированные символы utf8 как% чч

. Продолжайте до появления символа «-»

. Коллектор битов должен быть нулевым

...