doucanshou6998 2016-06-14 14:44
浏览 1270
已采纳

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

Go templates auto-escape but only the five characters <>&' and " (see html.EscapeString)

so this code like

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 (as you can check here: Go Playground)

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

So how do i use golang templates to render text that may contain characters like äåüöß?

It's not like i could escape these myself, because e.g. "ä" escapes to "&auml;" which means that efter i escape manually, golang just escapes the "&" character part of that a second time and i get "&amp;auml;" (but the html-file should contain a single escaped "&auml;" so that the browser displays an "ä").

  • 写回答

1条回答 默认 最新

  • douzang7928 2016-06-14 15:04
    关注

    These characters are fine as-is in modern browsers, but you'll need to specify a character encoding in your webpage.

    Add the line

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

    in your document's head.

    For more on character encodings in HTML, see the W3C documentation.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 在若依框架下实现人脸识别
  • ¥15 网络科学导论,网络控制
  • ¥100 安卓tv程序连接SQLSERVER2008问题
  • ¥15 利用Sentinel-2和Landsat8做一个水库的长时序NDVI的对比,为什么Snetinel-2计算的结果最小值特别小,而Lansat8就很平均
  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同