gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 01:25:58 27 4
gpt4 key购买 nike

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

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

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

是否有某种 map 或数据库允许我们在我可以导入到我的代码中的两者之间进行转换。

最佳答案

Believe it or not

让我们离开幻想世界吧。

Duplicated vowel+oxia characters in Greek Unicode range

The Unicode Consortium

Unicode: Frequently Asked Questions: Normalization

The Go Blog: Text normalization in 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

关于go - 如何检测/处理多种 unicode 方式来编码字母上的重音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51914280/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com