我想將IDNA ASCII URL翻譯成Unicode。package mainimport ( "golang.org/x/net/idna" "log")func main() { input := "https://xn---36-mddtcafmzdgfgpbxs0h7c.xn--p1ai" idnaProfile := idna.New() output, err := idnaProfile.ToUnicode(input) if err != nil { log.Fatal(err) } log.Printf("%s", output)}輸出為:https://xn---36-mddtcafmzdgfgpbxs0h7c.рф似乎IDNA軟件包只轉換TLD。有沒有一些選項可以轉換完整的URL?我需要獲得與將 ASCII 網址粘貼到 Chrome 中時相同的結果:https://природный-источник36.рф
2 回答

拉風的咖菲貓
TA貢獻1995條經驗 獲得超2個贊
您只需要先解析 URL:
package main
import (
"golang.org/x/net/idna"
"net/url"
)
func main() {
p, e := url.Parse("https://xn---36-mddtcafmzdgfgpbxs0h7c.xn--p1ai")
if e != nil {
panic(e)
}
s, e := idna.ToUnicode(p.Host)
if e != nil {
panic(e)
}
println(s == "природный-источник36.рф")
}
https://golang.org/pkg/net/url#Parse

桃花長相依
TA貢獻1860條經驗 獲得超8個贊
IDNA字符串由由點“.”分隔的“標簽”組成。每個標簽都可以編碼(如果它以“xn--”開頭)或不編碼(如果它不以“xn--”開頭)。字符串由兩個標簽和 .只有第二個是IDNA編碼的。https://xn---36-mddtcafmzdgfgpbxs0h7c
xn--p1ai
只需處理URL中經過IDNA編碼的部分(即主機名)。其他任何事情都是荒謬的,行不通。
- 2 回答
- 0 關注
- 150 瀏覽
添加回答
舉報
0/150
提交
取消