Я работаю над WebDAV implementation for PHP. Чтобы упростить работу Windows и других операционных систем, мне нужно перескакивать через обручи символов.Нормализация (webdav) unicode paths
Windows использует ISO-8859-1 в своем HTTP-запросе, тогда как большинство других клиентов кодируют что-либо за пределами ascii как UTF-8.
Мой первый подход состоял в том, чтобы игнорировать это вообще, но я быстро столкнулся с проблемами при возврате URL-адресов. Затем я подумал, что лучше всего нормализовать все URL-адреса.
Использование ü в качестве примера. Это будут передаваться по проводам с помощью OS/X, как
сентовu%CC%88 (this is codepoint U+0308)
Windows, это как:
%FC (latin1)
Но, делая utf8_encode на% FC, я получаю:
%C3%BC (this is codepoint U+00FC)
Должен ли я рассматривать% C3% BC и u% CC% 88 как одно и то же? Если так .. как? Не прикасаться к нему, похоже, нормально работает для окон. Это как-то понимает, что это символ Юникода, но обновление одного и того же файла вызывает ошибку (без какой-либо конкретной причины).
Буду рад предоставить дополнительную информацию.
Что именно вы имеете в виду, когда говорите «Windows воспринимает это как»? Какой клиент Windows webdav? Выполнение какой операции? –
Windows XP SP3 будет кодировать любые специальные символы (в плоскости латинского 1) по ISO-8859-1. Я пробовал это для PUT на новых ресурсах. – Evert
Вы имеете в виду "WebDAV Mini-Redirector"? Звучит как ошибка для меня; более старый клиент веб-папок окончательно использовал UTF-8. –