https://wiki.tcl-lang.org/page/Unicode+and+UTF-8 This is what I referred to, which makes it look like emoji support is spotty. But that's all I read!
This is configurable, though -- I recall it was a preprocessor define in the C code, and you can change it to 32 bits per character, making it UTF-32. Of course, this won't help a Tcl script run somewhere else, but it means you _can_ build a Tcl interpreter that transparently works with "all unicode", at the cost of doubling memory consumption for every string.
All this is concerning the internal string format, not what it accepts as input/output.