用于在go模板中显示的Unicode Unescape URL

用于在go模板中显示的Unicode Unescape URL,go,url,unicode,Go,Url,Unicode,当URL包含unicode字符时,web浏览器会以真正的unicode格式显示URL,而不是长字符串%12%33等 在Golang中,当我们使用内置的gotemplate.HTML输出一个变量时,该变量将被转义以确保HTML的安全。但我想更进一步,取消对用%编码的字符的替换。在围棋中正确的方法是什么 为了清楚起见,这里是一个屏幕截图,我们只是不希望URL在我们的支持/票证系统中显得丑陋: 根据,有一个EscapedPath()函数,只在路径上工作。但如果是一种在整个URL(包括域名和查询参数)

当URL包含unicode字符时,web浏览器会以真正的unicode格式显示URL,而不是长字符串%12%33等

在Golang中,当我们使用内置的go
template.HTML
输出一个变量时,该变量将被转义以确保HTML的安全。但我想更进一步,取消对用%编码的字符的替换。在围棋中正确的方法是什么

为了清楚起见,这里是一个屏幕截图,我们只是不希望URL在我们的支持/票证系统中显得丑陋:


根据,有一个
EscapedPath()
函数,只在路径上工作。但如果是一种在整个URL(包括域名和查询参数)上应用Unicode转换的方法,那将是理想的。这个已经存在了吗?

我不知道你为什么说它需要整个URL,这两个似乎都有效 罚款:


会有用吗?谢谢你的评论,很好的观察。我对文档的阅读表明,template.URL类型的目的是防止发生任何转义。但我会仔细检查它的工作原理。Unicode也可以嵌入到域名中。(网络浏览器通常会自动解码域名和路径中的Unicode。但是,是的,该解决方案适用于路径!是的,你不讨厌那些不返回并勾选答案的人。我还没有时间看这部分代码。我今天可能会做
package main
import "net/url"

const (
   s = "https://biblicaltext.com/dictionary/%e1%bd%95%ce%b1%ce%bb%ce%bf%cf%82?b=%cf%85"
   t = "https://biblicaltext.com/dictionary/ὕαλος?b=υ"
)

func main() {
   { // example 1
      u, e := url.PathUnescape(s)
      if e != nil {
         panic(e)
      }
      println(u == t)
   }
   { // example 2
      u, e := url.QueryUnescape(s)
      if e != nil {
         panic(e)
      }
      println(u == t)
   }
}