@
и .
не являются специальными символами в HTTP-URI.
Символы, которые необходимо кодировать, включают пробел (который становится +
), +
сам по себе и %
, которыйиспользуется для шестнадцатеричного кодирования.
Другие символы вне нормального диапазона ASCII 32–127 и различные другие символы в этом диапазоне используют это %
шестнадцатеричное кодирование.
Для правильной обработки выследует рассмотреть возможность использования encodeURIComponent()
, но только на той части URI, которая была предоставлена пользователем.Если вы закодируете весь URI таким образом, вы получите недопустимый URI.