@dbannon, and I'm not disputing what you are saying.
I included all I said in the context of displaying unicode characters from a string, especially if one is to take apart said string and display the characters individually. That can cause problems. The point of what I'm trying to saying to say, is if you break up a string into into its displayable characters, you should into account the composite parts (which may be more than one unicode character). Therefore, single character representation (2 bytes, 4 bytes, 8 bytes) is not going to work, the composite parts will need to be strings.
If your display system can't display those composite parts correct (not every unicode aware display system is totally compliant), then yes, there is a problem, and it is not always solvable (the exact equivalent character will not always be found).
I've worked with individuals who work with language scripts where those languages are not in the unicode standard. As such, they rely on diacritical marker combining that is supported by the unicode standard. While I only recently discovered this "feature" for myself in unicode I'd seen others use it before.
As was already mentioned in this topic/thread, string output should be used for individual display characters (which may be a composite of multiple unicode characters), not only for the composite issues, but because what encoding are you to chose for individual characters? utf-8? utf-16? full 32 bit?
I tend to use https://www.utf8-chartable.de as my reference to UTF8 characters, there you will find all you can imagine (and a few more) without overwriting anything.
That is an extremely small set of unicode characters and displayable combinations. Sure, it is fine for many who are just working with Western European languages, but not much beyond that.