File "Utf8.inc"

Path: /HotKeyMgr/inc/Utf8.inc
File size: 2.48 KB
MIME-type:
Charset: 8 bit

'------------------------------------------------------------------------------
' This is 'UTF8.inc'
' Prototypes:
'               FUNCTION Utf8ToAnsi (BYVAL S AS STRING) AS STRING
'               -------------------------------------------------
'               > used to read an UTF8 encoded string and display it correctly
'                 in Windows dialogs
'
'               FUNCTION AnsiToUtf8 (BYVAL S AS STRING) AS STRING
'               -------------------------------------------------
'               > used to read an Unicode string from a Windows dialog and
'                 store it correctly in an UTF8 encoded file
'
'               FUNCTION NoAccent (BYVAL s AS STRING) AS STRING
'               -----------------------------------------------
'               > used to remove accented characters from a (Windows) string
'------------------------------------------------------------------------------
FUNCTION Utf8ToAnsi (BYVAL S AS STRING) AS STRING
    LOCAL Buffer AS STRING
    LOCAL length AS LONG

    Buffer = SPACE$(LEN(S) * 2)
    MultiByteToWideChar %CP_UTF8, 0, BYVAL STRPTR (S), -1, BYVAL STRPTR (Buffer), LEN (Buffer)
    S = Buffer
    length = LEN (S)
    Buffer = SPACE$(length)
    WideCharToMultiByte %CP_ACP, 0, BYVAL STRPTR (S), -1, BYVAL STRPTR(Buffer), LEN(Buffer), BYVAL (0), BYVAL (0)
    FUNCTION = LEFT$(Buffer, INSTR(Buffer, $NUL)-1)
END FUNCTION
'------------------------------------------------------------------------------

'------------------------------------------------------------------------------
FUNCTION AnsiToUtf8 (BYVAL S AS STRING) AS STRING
    LOCAL Buffer AS STRING
    LOCAL length AS LONG

    Buffer = SPACE$(LEN(S) * 2)
    MultiByteToWideChar %CP_ACP, 0, BYVAL STRPTR (S), -1, BYVAL STRPTR(Buffer), LEN (Buffer)
    S = Buffer
    length = LEN (S)
    Buffer = SPACE$(length)
    WideCharToMultiByte %CP_UTF8, 0, BYVAL STRPTR (S), -1, BYVAL STRPTR (Buffer), LEN (Buffer), BYVAL (0), BYVAL (0)
    FUNCTION = LEFT$(Buffer, INSTR(Buffer, $NUL)-1)
END FUNCTION
'------------------------------------------------------------------------------

'------------------------------------------------------------------------------
FUNCTION NoAccent (BYVAL s AS STRING) AS STRING
    LOCAL r AS STRING
    r = s
    REPLACE ANY  ""  _
            WITH "AAAEEEEIIOOUUUCN"  IN r
    REPLACE ANY  "" _
            WITH "aaaeeeeiioouuuycn" IN r
    FUNCTION = r
END FUNCTION
'------------------------------------------------------------------------------