首页 > 解决方案 > 如何在符文中添加 ISO 9 拉丁字符

问题描述

我想在编码转换之前替换重音字符。为了避免illegal rune literal,我使用 Unicode。但这不起作用。有谁知道如何将这种重音字符放入符文中?

func replaceAccents(s string) string {
    // Replace accent characters
    b := bytes.NewBufferString("")
    for _, c := range s {
        // Check transliterations first
        if val, ok := transliterations[c]; ok {
            b.WriteString(val)
        } else {
            b.WriteRune(c)
        }
    }
    return b.String()
}
var transliterations = map[rune]string{
    'D' + 0x0302:    "D", // D̂ is an illegal rune literal
    0x004A + 0x030C: "J",
    0x004C + 0x0302: "L",
    0x004D + 0x0302: "M",
    0x004E + 0x0302: "N",
    0x0064 + 0x0302: "D",
    0x006C + 0x0302: "L",
    0x006D + 0x0302: "M",
    0x006E + 0x0302: "N",
}

本机解决方案将是一个规范化器,但我仍然想知道如何在符文中添加这些特殊字符。

normalizer := transform.Chain(norm.NFD, runes.Remove(runes.In(unicode.Mn)), norm.NFC)
s, _, _ = transform.String(normalizer, s)

标签: gounicodeencoding

解决方案


推荐阅读