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 );
}