【问题标题】:How to escape special characters (other than <>&'") in golang templates?如何在golang模板中转义特殊字符(<>&'"除外)?
【发布时间】: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: &lt;&gt;&amp;&#39; äåüöß

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

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

【问题讨论】:

  • 为什么需要为这些角色转义/使用实体?我相信它们在 utf-8 和 iso-8859-1 编码中都很好......
  • 因为我是居住在瑞典的德国人,所以数据(例如姓氏)可能包含这些字符,目前“ö”看起来像“ö”。
  • 您的 HTML 文档指定的字符编码是什么? (理想情况下,您可以将我们链接到您正在查看的页面吗?服务器可以覆盖文档设置...)
  • none :D 我应该使用哪个? (是的,答案可能就这么简单) ...
  • 尝试在&lt;head/&gt;中添加&lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8" /&gt;...

标签: go character-encoding go-templates


【解决方案1】:

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

添加一行

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

在您的文档中。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-22
    • 2023-03-06
    • 1970-01-01
    • 2019-09-24
    • 2012-04-14
    • 2020-01-17
    • 2015-01-02
    • 2010-10-27
    相关资源
    最近更新 更多