Here's a UTF-8 decoder I had in my back pocket that does all the characters:
DEFLNG A-Z
REDIM SHARED __utf8d(0) AS _BYTE
__utf8dl:
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9
DATA 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7
DATA 8,8,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
DATA &Ha,&H3,&H3,&H3,&H3,&H3,&H3,&H3,&H3,&H3,&H3,&H3,&H3,&H4,&H3,&H3
DATA &Hb,&H6,&H6,&H6,&H5,&H8,&H8,&H8,&H8,&H8,&H8,&H8,&H8,&H8,&H8,&H8
DATA &H0,&H1,&H2,&H3,&H5,&H8,&H7,&H1,&H1,&H1,&H4,&H6,&H1,&H1,&H1,&H1
DATA 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,0,1,0,1,1,1,1,1,1
DATA 1,2,1,1,1,1,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1
DATA 1,2,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,3,1,1,1,1,1,1
DATA 1,3,1,1,1,1,1,3,1,3,1,1,1,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1
SUB utf8print (in$)
IF UBOUND(__utf8d) = 0 THEN
REDIM __utf8d(0 TO 399) AS _BYTE
RESTORE __utf8dl
FOR i& = 0 TO 399
READ __utf8d(i&)
NEXT i&
END IF
o$ = ""
FOR i& = 1 TO LEN(in$)
c~%% = ASC(in$, i&)
typ~%% = __utf8d(c~%%)
IF s~%% <> 0 THEN
cp = (c~%% AND &H3F) OR (cp * 64)
ELSE
cp = (255 \ (2 ^ typ~%%)) AND c~%%
END IF
s~%% = __utf8d(256 + s~%% * 16 + typ~%%)
IF s~%% = 0 THEN
_MAPUNICODE cp& TO 0
PRINT CHR$(0);
ELSEIF s~%% = 1 THEN
ERROR 2
END IF
NEXT i&
_MAPUNICODE 0 TO 0
END SUB
FUNCTION fromhex$ (in$)
IF LEN(in$) MOD 2 THEN ERROR 2
o$ = SPACE$(LEN(in$) / 2)
FOR i& = 1 TO LEN(in$) STEP 2
c$ = MID$(in$, i&, 2)
MID$(o$, (i& + 1) / 2) = _MK$(_BYTE, VAL("&H" + c$))
NEXT i&
fromhex$ = o$
END FUNCTION
If you do something like utf8print fromhex$("D09220D187D0B0D189D0B0D18520D18ED0B3D0B020D0B6D0B8D0BB20D0B1D18B20D186D0B8D182D180D183D1813F20D094D0B02C20D0BDD0BE20D184D0B0D0BBD18CD188D0B8D0B2D18BD0B920D18DD0BAD0B7D0B5D0BCD0BFD0BBD18FD18021")
it works nicely.
Going up higher you have something like utf8print fromhex$("E0A490")
which does work but you'll need a different font because cyberbit doesn't support it.
Unfortunately you can't do utf8print fromhex$("F0908080")
because _MAPUNICODE is crappy and doesn't support code points above U+10000.