Как вывести кириллицу в браузер на 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
225 +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 Апр 2024 в 13:19
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир