Question

I was expecting to get 밥 and 좋은, for the last two output.

for the output but This does not "combine" any of the following.

This package does not do anything.

Could anybody tell what I did wrong in this code? I would greatly appreciate it.

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

The package is from here

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

Was it helpful?

Solution

Yes, it does something. If you observe the output from your first operation:

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

You can see that it has successfully made a decomposition of your string, returning three code points in place of your original character. The first being :

U+110B (HANGUL CHOSEONG IEUNG)

While not visibly, this differs from the character in your str variable:

U+3147 (HANGUL LETTER IEUNG)

If you would make a composition of the characters you get as an output from the NFD, you would indeed end up with 앉 again.

EDIT

The letters in your str variable uses Hangul Compatibility Jamo characters which are only meant for backwards compatibility, but lacks semantic properties. If you want it to work, you should use the Hangul Jamo block instead.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top