如何转义 golang 模板中的特殊字符(<>&'" 除外)?

How to escape special characters (other than <>&'") in golang templates?

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)

returns(您可以在此处查看:Go Playground

special chars: &lt;&gt;&amp;&#39; äåüöß

那么我如何使用 golang 模板呈现可能包含 äåüöß 等字符的文本?

我自己也逃不过这些,因为例如“ä”转义为“ä”这意味着在我手动转义后,golang 只是第二次转义了“&”字符部分,我得到了“&auml;” (但 html 文件应包含一个转义的“ä”,以便浏览器显示“ä”)。

这些字符在现代浏览器中没有问题,但您需要在网页中指定字符编码。

添加行

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 

在您文档的头部。

有关 HTML 中字符编码的更多信息,请参阅 W3C documentation