What you’ve provided is perfectly functional. It will produce a base64-encoded string of the bytes of your source string encoded in UTF-16.
If you’re asking if UTF-16 can represent any character in your string, then yes. The only difference between UTF-16 and UTF-32 is that UTF-16 is a variable-length encoding; it uses two-bytes to represent characters within a subset, and four-bytes for all other characters.
There are no unicode characters that cannot be represented by UTF-16.