'
' Print Unicode value to screen using UTF8 - See also http://www.unicode.org/charts/
'
' Install correct TTF font to make sure the UCS2 characters are printed correctly.
'
' For example the Junicode font: http://junicode.sourceforge.net/
'
' March 2011, PvE - GPL
'
'-----------------------------------------------------------------------
FUNCTION UCS2UTF8$(STRING number$)
LOCAL nr, byte1, byte2, byte3, utf1, utf2, utf3, utf4
LOCAL result$
nr = DEC(number$)
IF nr <= DEC("7f") THEN
byte1 = nr & 255
result$ = CHR$(byte1)
ELIF nr > DEC("7f") AND nr <= DEC("07ff") THEN
byte1 = nr & 255
byte2 = (nr & 65280) >> 8
utf1 = ((byte1 & 63) + 128)
utf2 = ((byte1 & 192) >> 6) + ((byte2 & 7) << 2) + 192
result$ = CONCAT$(CHR$(utf2), CHR$(utf1))
ELIF nr > DEC("07ff") AND nr <= DEC("ffff") THEN
byte1 = nr & 255
byte2 = (nr & 65280) >> 8
utf1 = ((nr & 63) + 128)
utf2 = ((byte1 & 192) >> 6) + ((byte2 & 15) << 2) + 128
utf3 = ((byte2 & 240) >> 4) + 224
result$ = CONCAT$(CHR$(utf3), CHR$(utf2), CHR$(utf1))
ELIF nr > DEC("ffff") AND nr <= DEC("10ffff") THEN
byte1 = nr & 255
byte2 = (nr & 65280) >> 8
byte3 = (nr & 16711680) >> 16
utf1 = ((nr & 63) + 128)
utf2 = ((byte1 & 192) >> 6) + ((byte2 & 15) << 2) + 128
utf3 = ((byte2 & 240) >> 4) + ((byte3 & 3) << 4) + 128
utf4 = ((byte3 & 28) >> 2) + 240
result$ = CONCAT$(CHR$(utf4), CHR$(utf3), CHR$(utf2), CHR$(utf1))
ELSE
PRINT "Value out of range."
END
END IF
RETURN result$
END FUNCTION
' Print the EURO sign
PRINT UCS2UTF8$("20ac")
' Greek
PRINT UCS2UTF8$("03b2"), " ", UCS2UTF8$("03b4"), " ", UCS2UTF8$("03b8")