Utf16FromBuffer - cCharTranslate

Creates a UTF-16 string in a memory buffer from an OEM, ANSI or UTF-8 memory buffer

Type: Function

Return Data Type: Pointer

Parameters: Pointer pMultiCharBuffer Integer eCharType Integer ByRef iLen

ParameterDescription
pMultiCharBufferA null terminated string
eCharTypeThe type of string encoding, which may be OEM (CP_OEMCP), ANSI (CP_ACP) or UTF-8 (CP_UTF8)
iLen (ByRef)Returns the length, in wide characters, of the Unicode string


Return Value

The buffer address along with the length in wide characters of the Unicode string, which is returned by reference in iLen.


Syntax
Function Utf16FromBuffer Pointer pMultiCharBuffer Integer eCharType Integer ByRef iLen Returns Pointer

Call: Get Utf16FromBuffer pMultiCharBuffer eCharType (&iLen) to PointerVariable


Description

Utf16FromBuffer creates a UTF-16 string in a memory buffer from an OEM, ANSI or UTF-8 memory buffer.

You are responsible for eventually disposing of the newly created memory buffer.

Use Windows.pkg
Use cCharTranslate.pkg
 
Object oCharTranslate is a cCharTranslate
End_Object
 
// test Utf16FromBuffer and Utf16ToBuffer
Procedure TestUTF16Buffer 
    Address aVar aUTF16Buffer aVar2
    Integer iLen iVoid
    String sVar sVar2

    Move "Test String-Ññóí" to sVar
    Move (AddressOf(sVar)) to aVar
 
    // Move OEM to UTF16 buffer
    Get Utf16FromBuffer of oCharTranslate aVar CP_OEMCP (&iLen) to aUTF16Buffer
    
    // Move UTF16 Buffer to OEM String
    Get Utf16ToBuffer of oCharTranslate aUTF16Buffer CP_OEMCP iLen to aVar2
    // Note length of OEM buffer is CStringLength(aVar2)
    Move aVar2 to sVar2
    If (sVar<>sVar2) Begin
        Send Info_Box "Test Failed"
    End
    
    Move (Free(aUTF16Buffer)) to iVoid
    Move (Free(aVar2)) to iVoid
End_Procedure
 
Send TestUTF16Buffer

See Also

UTF16ToBuffer | UTF16FromStr | UTF16ToStr | Free()