@ не экранируется url.PathEscape

Мне интересно, почему использование url.PathEscape не позволяет избежать символа «@».

package main

import (
    "fmt"
    "net/url"
)

func main() {
    path := url.PathEscape("[email protected]")
    fmt.Println(path) //[email protected]
}

Я понимаю, что символ @ зарезервирован для компонента пути URI, почему он не экранирует его?

Нафаик. Насколько мне известно, знак @ зарезервирован в компоненте полномочий в качестве разделителя между подкомпонентом информации о пользователе и подкомпонентом хоста. Был один сервер приложений или CMS, который активно использовал знаки @ в компоненте пути и запросах... Не могу вспомнить, какой именно.

Markus W Mahlberg 06.07.2024 19:32

Что интересно, url.PathUnescape выполняет unescape %40, который представляет кодировку для @

David Meléndez 06.07.2024 19:45

Это ничего не значит, url.PathUnescape убирает все %-коды. Например, он преобразует %41 в «A», хотя очевидно, что A не имеет особого значения.

Guy Incognito 06.07.2024 19:47
Создание API ввода вопросов на разных языках программирования (Python, PHP, Go и Node.js)
Создание API ввода вопросов на разных языках программирования (Python, PHP, Go и Node.js)
API ввода вопросов - это полезный инструмент для интеграции моделей машинного обучения, таких как ChatGPT, в приложения, требующие обработки...
1
3
53
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Здесь:

https://datatracker.ietf.org/doc/html/rfc3986#section-3.3

«@» явно указан как один из допустимых компонентов сегмента пути, поэтому нет необходимости экранировать его.

Другие вопросы по теме