Как вывести кириллицу в браузер на GO? Добрый день, есть код, пример из интернета, выводящий текст из адресной строки.
Допустим
1. Переход на example.com/test выведет нам "Hello test"
2. Переход на example.com/тест выведет "Hello %D1%82%D0%B5%D1%81%D1%82"
Гугл говорит использовать "net/url", но при попытке получаю ошибку:./index.go:16:35: url.PathUnescape undefined (type string has no field or method PathUnescape)
Полный код:package main
import (
"net/http"
"strings"
"net/url"
)
func sayHello(w http.ResponseWriter, r *http.Request) {
name := "World"
url := strings.Trim(r.RequestURI, "/")
if len(url) > 0 {
name = strings.Split(url, "/")[0]
name = strings.ToUpper(name[0:1]) + name[1:] // change first symbol to Uppercase
}
w.Write([]byte("Hello, " + url.PathUnescape(name) + "!"))
}
func main() {
http.HandleFunc("/", sayHello)
err := http.ListenAndServe(":9001", nil)
if err != nil {
panic(err.Error())
}
}
Собственно вопрос, как штатными методами реализуется конвертация % в читаемый вид? Уж очень нужны кириллические урлы.

21 Авг 2019 в 06:21
173 +1
0
Ответы
1

Проблема в вашем коде состоит в том, что вы пытаетесь вызвать метод PathUnescape у значения строки url, а не у пакета net/url. Для конвертации URL-кодированных символов в читаемый вид вам нужно использовать функцию QueryUnescape из пакета net/url.

Вот исправленный код:

package main
import (
"net/http"
"strings"
"net/url"
)
func sayHello(w http.ResponseWriter, r *http.Request) {
name := "World"
url := strings.Trim(r.RequestURI, "/")
if len(url) > 0 {
name = strings.Split(url, "/")[0]
name = strings.ToUpper(name[0:1]) + name[1:] // change first symbol to Uppercase
}
decodedName, err := url.QueryUnescape(name)
if err != nil {
panic(err.Error())
}
w.Write([]byte("Hello, " + decodedName + "!"))
}
func main() {
http.HandleFunc("/", sayHello)
err := http.ListenAndServe(":9001", nil)
if err != nil {
panic(err.Error())
}
}

Теперь при переходе на example.com/тест выведет "Hello тест" вместо "Hello %D1%82%D0%B5%D1%81%D1%82".

20 Апр в 13:19
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 84 093 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир