如何检测/处理多种 unicode 方式来编码字母上的重音

信不信由你,这个词的 iota(最后一个字母)似乎在 unicode 中以两种不同的方式编码:

  • εἰμί(带有 TONOS 的 U+03AF 的希腊小写字母 IOTA)

  • εἰμί(带 OXIA 的希腊小写字母 IOTA' U+1F77)

我假设有时字母被编码为单个字母,而在其他时候它被编码为字母+重音。

是否有某种地图或数据库允许我们在我可以导入到我的代码中的一个或另一个之间进行转换。


波斯汪
浏览 87回答 1
1回答

繁花如伊

信不信由你让我们离开幻想世界吧。希腊语 Unicode 范围内重复的元音 + oxia 字符Unicode 联盟Unicode:常见问题:规范化Go 博客:Go 中的文本规范化例如,package mainimport (    "bytes"    "fmt"    "golang.org/x/text/unicode/norm")func Equal(a, b string) bool {    var ia, ib norm.Iter    ia.InitString(norm.NFKD, a)    ib.InitString(norm.NFKD, b)    for !ia.Done() && !ib.Done() {        if !bytes.Equal(ia.Next(), ib.Next()) {            return false        }    }    return ia.Done() && ib.Done()}func main() {    a := "εἰμ\u03AF"    b := "εἰμ\u1F77"    fmt.Println(a)    fmt.Println(b)    fmt.Println(a == b)    fmt.Println(Equal(a, b))}输出:εἰμίεἰμίfalsetrue
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go