They're both correct. The difference is in endian-ness.
My guess is that UTF-16 will output the string as little-endian by default. You can enforce big-endianness by using UTF-16BE instead.
That, or the exact reverse ;)
Note that these are not unicode codepoints, but rather the UTF-16BE/LE/UCS-2 byte representation. Codepoints are a different set of numbers.
EDIT: Using UTF-16LE
in mb_convert_encoding
will give you to the reverse representation.