Проблема декодирования урлов при развертывании с помощью IIS и FastCGI на сервере windows server

Я реализовал приложение, front-end Angular, back-end Django, развернутое на сервере Windows с использованием IIS и FastCGI. Это приложение обслуживает медиа файлы по определенному URL. Оно прекрасно работает локально на dev-сервере. Я могу получить доступ ко всем моим файлам по пути "medias/myfilepath".

Проблема возникла в производстве на IIS. Специальные символы кодируются по-другому. Я думаю, что это делает FastCGI. Я не могу найти правила кодировки, и мое приложение Django не может правильно декодировать, поэтому мои запросы заканчиваются ошибкой 404.

Вот несколько примеров разницы в кодировке между локальным и производственным сервером :

    <<<1><<2> к
  • | местный : %C3%80 | прод : %25C0
  • ù
  • | local : %C3%99 | prod : %25D9 <<<9><<10><<10>E | local : %C3%89 | prod : %25C9
  • Я не могу найти никакой документации по этому вопросу, у меня нет доступа к конфигурациям на стороне CGI. Я мог бы обновить декодирование на стороне Django, чтобы соответствовать этому, но я не могу найти, какой из них применяется...

    У кого-нибудь есть идеи на эту тему?

    это происходит потому, что на вашей локальной машине установлена кодировка windows-12xx вместо UTF-8. Мне показалось наиболее удобным использовать urllib в python для преобразования кодировки url fastcgi в нужную строку.

    например, если я пытаюсь ответить Тестом, имя которого начинается с текста, добавленного к URL (charset моей машины prod - windows-1255):

    #views.py
    
    import urllib.parse
    
    def searchViewText(request,text): #text received in windows-1255 encoding
        text = urllib.parse.unquote(text,'windows-1255') #
    
        tests = Test.objects.filter(name__icontains = text)
    
    context={
    
        
            "tests" : tests,
          
        }
        return render(request,"search.html",context)
    
    Вернуться на верх