string - 规范包 : how do I combine separate characters?

标签 string unicode go character composition

对于最后两个输出,我期待得到 밥 和 좋은。

用于输出,但这不会“组合”以下任何内容。

这个包什么都不做。

谁能告诉我这段代码哪里做错了?我将不胜感激。

import "code.google.com/p/go.text/unicode/norm"
import "fmt"

func main() {
  str := "ㅈㅗㅎㅇㅡㄴ"
  fmt.Println( string( norm.NFD.AppendString(nil, "앉") ) )
  fmt.Println( string( norm.NFC.AppendString(nil, "바ㅂ") ) )
  fmt.Println( string( norm.NFC.AppendString(nil, str) ) )
}

包裹来自这里

go get -u code.google.com/p/go.text/unicode/norm http://godoc.org/code.google.com/p/go.text/unicode/norm

最佳答案

是的,它确实有所作为。如果您观察第一次操作的输出:

fmt.Println( string( norm.NFD.AppendString(nil, "앉") ) )

您可以看到它已成功分解您的字符串,返回三个代码点来代替您的原始 字符。第一个是 :

U+110B (HANGUL CHOSEONG IEUNG)

虽然不明显,但这与 str 变量中的 字符不同:

U+3147 (HANGUL LETTER IEUNG)

如果您要组合从 NFD 输出的字符,您确实会再次以 앉 结束。

编辑

str 变量中的字母使用 Hangul Compatibility Jamo仅用于向后兼容但缺乏语义属性的字符。如果你想让它工作,你应该使用 Hangul Jamo而是阻止。

关于string - 规范包 : how do I combine separate characters?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19837256/

相关文章:

string - 组合变音符号出现在代码点之后的顺序是否重要?

mysql - 如何导出具有latin1字符集的数据并维护该字符集

http - 为什么在使用 Go HTTP 客户端时我的 HTTP POST 请求会有 60 秒的延迟?

Golang 模块问题--package xxx/xxxx is not in GOROOT

python - Cython 中的字符串操作

c - 如何使用带有标准输入流的 fscanf 终止 while 循环

c++ - 在 Linux 中将 std::string 转换为 Unicode

Java编码——有多个正确答案的提示

javascript - 通过公共(public)分隔符解析 javascript 中的字符串

function - 添加到 []interface{} 的对象。现在需要获取对象并调用对象各自的 Display() fn