As さんが書き込んだ内容に関連した問題のような気はしますが、
いちおう MultiByteToWideChar を使った UTF-8 から UTF-16 の
変換プログラムのサンプルを載せておきます。
#module
#defcfunc showbyte var p1
s = ""
repeat 20 : s += strf( "%02X,", peek( p1, cnt ) ) : loop
return s
#global
#include "kernel32.as"
#define CP_UTF8 65001
sdim s1, 256
sdim s2, 256
// 文字列"abcdあいうえ" を UTF-8 で表現。
poke s1, 0, "abcd"
lpoke s1, 4, 0x8281E3
lpoke s1, 7, 0x8481E3
lpoke s1, 10, 0x8681E3
lpoke s1, 13, 0x8881E3
poke s1, 16, 0
// UTF-8 -> UTF-16
MultiByteToWideChar CP_UTF8, 0, varptr( s1 ), -1, varptr( s2 ), 255
mes "変換前 (UTF8) : " + showbyte( s1 )
mes "変換後 (UTF16) : " + showbyte( s2 )
// UTF-16 文字列を SJIS 文字列に変換して表示。
mes "変換後 (文字列): " + cnvwtos( s2 )
> そもそも、UTF-8はUnicodeのエンコーディング規格ですよ?
Windows 関連では Unicode という単語は UTF-16LE (だけ)を意味するものとして
扱われている場合がありますから・・・。