+ Support UTF8 for the .dsl files which begin with UTF8 BOM.

This commit is contained in:
Konstantin Isakov 2009-05-08 10:21:03 +00:00
parent cc1a70d01a
commit d443ec5620
2 changed files with 17 additions and 1 deletions

View file

@ -471,6 +471,19 @@ DslScanner::DslScanner( string const & fileName ) throw( Ex, Iconv::Ex ):
if ( firstBytes[ 0 ] == 0xFE && firstBytes[ 1 ] == 0xFF )
encoding = Utf16BE;
else
if ( firstBytes[ 0 ] == 0xEF && firstBytes[ 1 ] == 0xBB )
{
// Looks like Utf8, read one more byte
if ( gzread( f, firstBytes, 1 ) != 1 || firstBytes[ 0 ] != 0xBF )
{
// Either the file's too short, or the BOM is weird
gzclose( f );
throw exMalformedDslFile( fileName );
}
encoding = Utf8;
}
else
{
if ( firstBytes[ 0 ] && !firstBytes[ 1 ] )
encoding = Utf16LE;
@ -720,6 +733,8 @@ char const * DslIconv::getEncodingNameFor( DslEncoding e )
return "WINDOWS-1252";
case Windows1251:
return "WINDOWS-1251";
case Details::Utf8:
return "UTF-8";
case Windows1250:
default:
return "WINDOWS-1250";

View file

@ -28,7 +28,8 @@ enum DslEncoding
Utf16BE,
Windows1252,
Windows1251,
Windows1250
Windows1250,
Utf8 // This is an extension. Detected solely by the UTF8 BOM.
};