Hello and happy new year.
I think that the issue could be like this, correct me if I'm wrong:

Let's do a little review:
ASCII was a 7 bits character encoding (5 at the beginning)
ANSI is a 8 bits character encoding where the first 127 characters that are the ones corresponding to the ASCII table are the same for everybody and the upper characters (that range from 128 to 255) vary for different codepages, that is a number that defines the character set.
UCS-2 is a two bytes-per-character encoding system that intended to have all the characters in a single set that could be the same for everybody and used worldwide.
But new characters appeared and UCS-2 was not able to hold all the characters and then was introduced UTF-16 that is like a extension of UCS-2.
UTF-16 is like UCS-2 but in some cases it can use 4 bytes instead of two for encoding more characters (like the ones used in this thread).

Second part: VB6:
VB6 stores the strings in memory using UTF-16.

But regarding its built-in functions, many of them are designed to handle ANSI or UCS-2.

For example Chr/Chr$ and Asc only handle ANSI, and are not able to handle UCS-2 nor UTF-16.
ChrW/ChrW$ and AscW can handle ANSI and UCS-2, but not UTF-16.
For these functions, there are not VB6 built-in functions to handle UTF-16 characters that use more than two bytes, the built-in functions that end with "W" only can handle UCS-2 but not UTF-16.

And that's the reason of this thread