如何转义 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: <>&' äåüöß
那么我如何使用 golang 模板呈现可能包含 äåüöß 等字符的文本?
我自己也逃不过这些,因为例如“ä”转义为“ä”这意味着在我手动转义后,golang 只是第二次转义了“&”字符部分,我得到了“ä” (但 html 文件应包含一个转义的“ä”,以便浏览器显示“ä”)。
这些字符在现代浏览器中没有问题,但您需要在网页中指定字符编码。
添加行
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
在您文档的头部。
有关 HTML 中字符编码的更多信息,请参阅 W3C documentation。
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: <>&' äåüöß
那么我如何使用 golang 模板呈现可能包含 äåüöß 等字符的文本?
我自己也逃不过这些,因为例如“ä”转义为“ä”这意味着在我手动转义后,golang 只是第二次转义了“&”字符部分,我得到了“ä” (但 html 文件应包含一个转义的“ä”,以便浏览器显示“ä”)。
这些字符在现代浏览器中没有问题,但您需要在网页中指定字符编码。
添加行
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
在您文档的头部。
有关 HTML 中字符编码的更多信息,请参阅 W3C documentation。