Как избежать использования специальных символов (кроме <>&'") в шаблонах golang?
Автоматически экранировать шаблоны Go, но только пять символов <>&'и " (см. Html.EscapeString)
так что этот код, как
check := func(err error) {
if err != nil {
log.Fatal(err)
}
}
t, err := template.New("foo").Parse(`{{define "T"}}special chars: {{.}}{{end}}`)
check(err)
err = t.ExecuteTemplate(os.Stdout, "T", "<>&' äåüöß")
check(err)
возвращается (как вы можете проверить здесь: Go Playground)
special chars: <>&' äåüöß
Итак, как мне использовать шаблоны golang для рендеринга текста, который может содержать такие символы, как символы?
Я не могу избежать этого сам, потому что, например, "ä" убегает к "& auml;" Это означает, что после того, как я убегу вручную, Голанг просто избегает части символа "&", и я получаю "& amp; auml;" (но html-файл должен содержать один экранированный символ "& auml;", чтобы браузер отображал "ä").
1 ответ
Эти символы хороши как есть в современных браузерах, но вам нужно указать кодировку символов на своей веб-странице.
Добавьте строку
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
в голове вашего документа.
Подробнее о кодировке символов в HTML см. Документацию W3C.