EncodingType getEncodingType()

in cli/strings.cpp [261:314]


EncodingType getEncodingType( wstring& text )
{
    // UTF8
    if( text.size() >= 3
     && text[0] == (wchar_t)0xEF
     && text[1] == (wchar_t)0xBB
     && text[2] == (wchar_t)0xBF )
    {
        text.erase( 0, 3 );
        return( EncodingType::UTF8 );
    }

    // UTF32_BigEndian
    if( text.size() >= 4
     && text[0] == (wchar_t)0x00
     && text[1] == (wchar_t)0x00
     && text[2] == (wchar_t)0xFE
     && text[3] == (wchar_t)0xFF )
    {
        text.erase( 0, 4 );
        return( EncodingType::UTF32_BigEndian );
    }

    // UTF32_LittleEndian
    if( text.size() >= 4
     && text[0] == (wchar_t)0xFF
     && text[1] == (wchar_t)0xFE
     && text[2] == (wchar_t)0x00
     && text[3] == (wchar_t)0x00 )
    {
        text.erase( 0, 4 );
        return( EncodingType::UTF32_LittleEndian );
    }

    // UTF16_BigEndian
    if( text.size() >= 2
     && text[0] == (wchar_t)0xFE
     && text[1] == (wchar_t)0xFF )
    {
        text.erase( 0, 2 );
        return( EncodingType::UTF16_BigEndian );
    }

    // UTF16_LittleEndian
    if( text.size() >= 2
     && text[0] == (wchar_t)0xFF
     && text[1] == (wchar_t)0xFE )
    {
        text.erase( 0, 2 );
        return( EncodingType::UTF16_LittleEndian );
    }

    return( EncodingType::ANSI );
}