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

时间:2016-06-14 14:44:03

标签: go character-encoding go-templates

转到模板自动转义,但只有五个字符<>&'和“(见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: &lt;&gt;&amp;&#39; äåüöß

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

我不能自己逃避这些,因为例如“ä”逃到“&amp; auml;”这意味着,在我手动逃离之后,golang就逃脱了“&amp;”第二次的角色部分,我得到“&amp; amp; auml;” (但是html文件应该包含一个转义的“&amp; auml;”,以便浏览器显示“ä”)。

1 个答案:

答案 0 :(得分:1)

这些字符在现代浏览器中很好用,但您需要在网页中指定字符编码。

添加行

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

在你的文件头上。

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