【问题标题】:How in Golang convert punycode to unicode?Golang如何将punycode转换为unicode?
【发布时间】:2017-07-13 14:55:26
【问题描述】:

我想转换 url f.e.:

xn--h1aaebtrh5b.xn--p1ai --> кисточки.рф

当然还有反向:

kremlin.ru ---> xn--d1abbgf6aiiy.xn--p1ai

我尝试使用 idna 包,但我无法导入供应商包 idna

Link 在文档上: https://godoc.org/golang.org/x/net/idna#Profile.ToUnicode

尝试导入:

import "golang_org/x/net/idna"

得到错误:

main.go:18:8: cannot find package "golang_org/x/net/idna" in any of:
    /usr/local/go/src/golang_org/x/net/idna (from $GOROOT)
    /home/arseny/go/src/golang_org/x/net/idna (from $GOPATH)

再试一次:

import "vendor/golang_org/x/net/idna"

错误:

main.go:18:8: must be imported as golang_org/x/net/idna

main.go:19:2: use of vendored package not allowed

【问题讨论】:

  • 为什么要导入golang_org/x/net/idna?该包名为golang.org/x/net/idna
  • 是和否,在 IDE Goglang 中,此文件夹调用 golang_org
  • 为什么是-1 ???奇怪的人...... js中的同一个问题stackoverflow.com/questions/183485/…
  • 这个问题并不是关于如何将 punycode 转换为 unicode。这就是为什么你不能导入那个包的原因。如您的问题所示,您已经知道如何转换 punycode。
  • 真的吗?好的,一开始,我说我想要什么,我使用谷歌并找到它的包,接下来我真的无法导入它们,但是如果你知道另一种方法如何将 punycode 转换为 unicode 和反向,我会很高兴。

标签: url go unicode import package


【解决方案1】:

有人说这段代码有效

在 bash 中:

go get golang.org/x/net/idna

示例代码去:

package main

import (
    "fmt"
    "golang.org/x/net/idna"
)

var p *idna.Profile

func main() {
    // Raw Punycode has no restrictions and does no mappings.
    p = idna.New()
    fmt.Println(p.ToUnicode("xn--d1abbgf6aiiy.xn--p1ai"))
}

但我仍然希望存在另一种方式。我不喜欢将包的本地副本复制到 $GOROOT 路径中。

【讨论】:

    猜你喜欢
    • 2010-09-16
    • 2017-08-22
    • 2017-02-24
    • 1970-01-01
    • 1970-01-01
    • 2011-05-29
    • 1970-01-01
    • 2011-06-12
    • 1970-01-01
    相关资源
    最近更新 更多