UTF-16-encoded data is typically string(16), isn't it? Isn't that what Windows is using for N things?
Well, no, not really (utf16, that is) since it's byte-order dependent.
string(16) is a string with 16-bit integers in it, aka lower half of unicode.
It's an internal distinction that's not really important.
utf-16-be and utf-16-le would both be encoded as string(8), presumably.