为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
波斯汪 2023-03-21 15:59:21
信不信由你,这个词的 iota(最后一个字母)似乎在 unicode 中以两种不同的方式编码:εἰμί(带有 TONOS 的 U+03AF 的希腊小写字母 IOTA)εἰμί(带 OXIA 的希腊小写字母 IOTA' U+1F77)我假设有时字母被编码为单个字母,而在其他时候它被编码为字母+重音。是否有某种地图或数据库允许我们在我可以导入到我的代码中的一个或另一个之间进行转换。
查看完整描述

1 回答

?
繁花如伊

TA贡献2012条经验 获得超12个赞

信不信由你

让我们离开幻想世界吧。

希腊语 Unicode 范围内重复的元音 + oxia 字符

Unicode 联盟

Unicode:常见问题:规范化

Go 博客:Go 中的文本规范化


例如,

package main


import (

    "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))

}

输出:


εἰμί

εἰμί

false

true


查看完整回答
反对 回复 2023-03-21
  • 1 回答
  • 0 关注
  • 86 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信