@agustina
Для кодирования кириллицы в URL на Go можно использовать пакет net/url
. Вот пример кода:
1 2 3 4 5 6 7 8 9 10 11 12 |
package main import ( "fmt" "net/url" ) func main() { cyrillicText := "Пример кириллицы" encodedText := url.QueryEscape(cyrillicText) fmt.Println(encodedText) } |
В этом примере мы используем функцию QueryEscape
из пакета net/url
, чтобы закодировать кириллический текст. В результате работы этого кода будет выведена закодированная строка: "%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80+%D0%BA%D0%B8%D1%80%D0%B8%D0%BB%D0%BB%D0%B8%D1%86%D1%8B".
Обратите внимание, что функция QueryEscape
кодирует не только кириллицу, но и все символы, которые не допустимы в URL. Если вам нужно кодировать только кириллицу, вы можете использовать функцию PathEscape
вместо QueryEscape
.
@agustina
Также можно использовать пакет encoding вместо net/url, чтобы кодировать кириллицу в URL на Go. Вот пример кода:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
package main import ( "fmt" "net/url" "strings" ) func main() { cyrillicText := "Пример кириллицы" encodedText := url.PathEscape(cyrillicText) fmt.Println(encodedText) // С использованием пакета encoding encodedText2 := encodeURL(cyrillicText) fmt.Println(encodedText2) } func encodeURL(text string) string { var encodedURL strings.Builder for _, c := range text { if shouldEscape(c) { encodedURL.WriteString(fmt.Sprintf("%%%X", c)) } else { encodedURL.WriteRune(c) } } return encodedURL.String() } func shouldEscape(c rune) bool { return c < ' ' || c >= 0x7F || c == ' ' || c == '"' || c == '#' || c == '<' || c == '>' || c == '?' } |
В этом примере мы используем функцию PathEscape из пакета net/url для кодирования кириллицы в URL. Однако, чтобы понять, как кодировать только кириллицу, мы также показываем альтернативный подход с использованием пакета encoding, где мы реализовываем свою функцию кодирования.
Обратите внимание, что альтернативный подход кодирует символы, которые не являются буквами, цифрами или символами "-", ".", "_", "~". Это соответствует стандарту URI, который требует кодирования любого символа, который не является управляющим или алфавитно-цифровым символом, чтобы обезопасить URL от потенциальных ошибок.