【发布时间】:2016-06-14 14:44:03
【问题描述】:
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 模板来渲染可能包含 äåüöß 等字符的文本?
我自己也无法逃脱这些,因为例如"ä" 转义为 "ä"这意味着在我手动转义之后,golang 只是第二次转义了其中的“&”字符部分,我得到了“ä” (但 html 文件应该包含一个转义的“ä”,以便浏览器显示一个“ä”)。
【问题讨论】:
-
为什么需要为这些角色转义/使用实体?我相信它们在 utf-8 和 iso-8859-1 编码中都很好......
-
因为我是居住在瑞典的德国人,所以数据(例如姓氏)可能包含这些字符,目前“ö”看起来像“ö”。
-
您的 HTML 文档指定的字符编码是什么? (理想情况下,您可以将我们链接到您正在查看的页面吗?服务器可以覆盖文档设置...)
-
none :D 我应该使用哪个? (是的,答案可能就这么简单) ...
-
尝试在
<head/>中添加<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />...
标签: go character-encoding go-templates