如何使golang标准化具有多种编码方式的unicode字符串?

如何使golang标准化具有多种编码方式的unicode字符串?,go,unicode,Go,Unicode,可以用多种不同的方式对unicode字符进行编码。创建软件时,这很烦人。例如,以下字符串可以用两个不同的符文序列编码: νῦν: 957 965 834 957 νῦν: 957 8166 957 golang中是否有一种功能可以标准化为一种编码方法?我想应该是把965834捣碎成8166 任何对此感兴趣的人的示例代码: package main import "fmt" func main() { //r1 := "νῦν" /

可以用多种不同的方式对unicode字符进行编码。创建软件时,这很烦人。例如,以下字符串可以用两个不同的符文序列编码:

νῦν: 957 965 834 957 
νῦν: 957 8166 957 
golang中是否有一种功能可以标准化为一种编码方法?我想应该是把965834捣碎成8166

任何对此感兴趣的人的示例代码:

package main

import "fmt"

func main() {
    //r1 := "νῦν"
    //r2 := "νῦν"
    r1 := []rune{957, 965, 834, 957}
    r2 := []rune{957, 8166, 957}


    fmt.Printf("%s %d: ", string(r1), len(r1))
    for i := 0; i < len(r1); i++ {
        fmt.Printf("%d ", r1[i])
    }
    fmt.Printf("\n")

    fmt.Printf("%s %d: ", string(r2), len(r2))
    for i := 0; i < len(r2); i++ {
        fmt.Printf("%d ", r2[i])
    }
    fmt.Printf("\n")
}
主程序包
输入“fmt”
func main(){
//r1:=“ν”ῦν"
//r2:=“ν”ῦν"
r1:=[]符文{957965834957}
r2:=[]符文{9578166,957}
fmt.Printf(“%s%d:”,字符串(r1),len(r1))
对于i:=0;i
可以使用
golang.org/x/text/unicode/norm
包:

func fixUnicode(in string) string {
    return norm.NFC.String(in)
}

可以使用
golang.org/x/text/unicode/norm
包:

func fixUnicode(in string) string {
    return norm.NFC.String(in)
}

这是Unicode的一个相当普遍的问题,例如在德语和法语中也会出现。规范化是通常的答案,但当然有多种规范化形式。哎呀!你可能会对它感兴趣。基本上,阅读那里的所有博客文章都是有益的。挑剔:这些不是字符串的不同“编码”(都是UTF-8),而是不同的“表示法”。这篇文章正在讨论中。这是Unicode的一个相当普遍的问题,例如在德语和法语中也会出现。规范化是通常的答案,但当然有多种规范化形式。哎呀!你可能会对它感兴趣。基本上,阅读那里所有的博客文章都是有益的。挑剔:这些不是字符串的不同“编码”(都是UTF-8),而是不同的“表示法”。这篇文章正在上讨论。