HttpAddRequestHeadersW с заголовком строки Unicode

Если я использую версию HttpAddRequestHeadersW и прикрепленную строку в формате Unicode, распознает ли сервер набор символов? Какая сторона отвечает за преобразование кодировки набора символов? Сервер или клиент?


person Bill Banks    schedule 31.05.2016    source источник


Ответы (1)


Широкая строка Unicode сначала будет преобразована Windows в кодировку iso-8859-1. Однако практически все символы, отличные от ASCII, запрещены, поэтому вам придется закодировать строку UTF8 в base64, а затем выполнить специальную обработку как на клиенте, так и на сервере, чтобы использовать ее.

Подробнее см. в этом вопросе: Как отправить не- Строка Unicode на английском языке с использованием заголовка HTTP?

person Jim Beveridge    schedule 01.06.2016
comment
Base64 — не единственный вариант, также подойдет экранирование URL (%E5 и т. д.). Необходимость пользовательской обработки с обеих сторон означает, что вы можете использовать любую кодировку для печати ASCII. - person MSalters; 01.06.2016
comment
Но проблема не только в кодировке. Вам также нужно разделить длинные строки и снова объединить их вместе. Хотя это, очевидно, можно сделать вручную с любой кодировкой, это стандартная функция в механизмах кодирования/декодирования Base64, поэтому весьма вероятно, что вы сможете использовать существующую стабильную библиотеку для обработки заголовка. - person Jim Beveridge; 05.06.2016