https://play.golang.org/p/05wZM9BhfB
I'm working on some code that reads UTF32 and converts it to go strings. I'm finding some surprising behavior when casting slices of runes to strings. runes := []rune{'©'} fmt.Printf(" cast to string: (%s)\n", string(runes)) fmt.Printf("bytes in string: (%x)\n", string(runes)) Output: cast to string: (©) bytes in string: (c2a9) // <-- where's the C2 byte coming from?? The weird part is that casting the rune slice to a string causes it to pick up an additional leading character. runesi 0x00-0x7f get nothing prepended. runes 0x80-0xbf gets a leading c2 byte as seen above. runes 0xc0-0xff gets a leading c3 byte. rune 0x100 gets a leading c4 byte. Seems like a pattern here. The same thing happens if I add the runes into a bytes.Buffer with WriteRune(), then print it out with bytes.Buffer.String(). Can anyone explain this? What's the correct way to convert a slice of runes into a string? -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.