Go templates auto-escape but only the five characters <>&' and " (see html.EscapeString)
so this code like
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)
returns (as you can check here: Go Playground)
special chars: <>&' äåüöß
So how do i use golang templates to render text that may contain characters like äåüöß?
It's not like i could escape these myself, because e.g. "ä" escapes to "ä" which means that efter i escape manually, golang just escapes the "&" character part of that a second time and i get "&auml;" (but the html-file should contain a single escaped "ä" so that the browser displays an "ä").