@narciso
В Go у вас есть встроенный пакет "net/url", который предоставляет функциональность для работы с URL-адресами. Для кодирования символов в URL-формат вы можете использовать функцию url.QueryEscape
.
Ниже пример кода, который кодирует строку с кириллицей в URL-формат:
1 2 3 4 5 6 7 8 9 10 11 12 |
package main import ( "fmt" "net/url" ) func main() { original := "Привет, мир!" encoded := url.QueryEscape(original) fmt.Println(encoded) } |
Результатом выполнения этого кода будет строка: %D0%9F%D1%80%D0%B8%D0%B2%D0%B5%D1%82%2C%20%D0%BC%D0%B8%D1%80%21
@narciso
Примечание: Функция url.QueryEscape кодирует не только кириллические символы, но и любые символы, которые не являются частью стандартного набора символов URL.
Если вы хотите закодировать только кириллические символы в URL-формат, можно использовать пакет unicode/utf8 для получения отдельных символов из строки и перекодировать только символы, которые являются кириллическими. Вот пример такого кода:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
package main
import ( "fmt" "net/url" "unicode/utf8" )
func main() { original := "Привет, мир!" encoded := "" for _, r := range original { if utf8.RuneLen(r) == 1 && r < utf8.RuneSelf { encoded += string(r) } else { encoded += url.QueryEscape(string(r)) } } fmt.Println(encoded) }
Результатом выполнения этого кода будет та же самая закодированная строка: "%D0%9F%D1%80%D0%B8%D0%B2%D0%B5%D1%82%2C%20%D0%BC%D0%B8%D1%80%21", но только кириллические символы будут закодированы, а все остальные символы останутся без изменений.