如何取消浏览url';主持人是谁?

如何取消浏览url';主持人是谁?,url,go,escaping,Url,Go,Escaping,我正在尝试处理以下URL: http://shitenonions%2elibsyn%2ecom/rss 当我尝试在Go中创建一个url时,出现以下错误: panic: parse http://shitenonions%2elibsyn%2ecom/rss: hexadecimal escape in host 如何修复此URL以便正确解析?我有一大组URL,其中有几个有这个问题 我曾考虑过URL解码,但我担心如果我这样做,那么对主机名以外的项目进行URL解码可能是不正确的。您可以使用UR

我正在尝试处理以下URL:

http://shitenonions%2elibsyn%2ecom/rss
当我尝试在Go中创建一个url时,出现以下错误:

panic: parse http://shitenonions%2elibsyn%2ecom/rss: hexadecimal escape in host
如何修复此URL以便正确解析?我有一大组URL,其中有几个有这个问题


我曾考虑过URL解码,但我担心如果我这样做,那么对主机名以外的项目进行URL解码可能是不正确的。

您可以使用
URL.QueryUnescape
将实体
%hh
解码回字符:

package main

import (
  "fmt"
  "net/url"
  "strings"
)

func fixHost(link string) string {
  if strings.HasPrefix(link, "http://") {
    p := strings.Index(link[7:], "/")
    if -1 != p {
      host, _ := url.QueryUnescape(link[7:7+p])
      return "http://" + host + link[7+p:]
    }
  }
  return link
}

func main() {
  fmt.Println(fixHost("http://shitenonions%2elibsyn%2ecom/rss"))
}