If you for example read data in CP-1250 and write it to DB with LATIN2 encoding you don’t need to put intermediate data to UTF-8 because it would spoil performance. (here is very probably place for other string implementation than current Base.String/Unicode.String)
Also you don’t want to show UTF-8 encoding error if you in process could not convert euro sign (CP1250 has it and LATIN2 don’t) because in this case your users are not dealing with UTF-8 at all.