Я думаю, что это происходит. С use Encode::Guess qw/utf8 iso-8859-1/;
«подсказка» не имеет значения (извините за неясность!), Поэтому у нас есть только
A1/B1: ERROR: Can't guess: iso-8859-1 or utf8 for 1 = educação
и
C1 / D1: кодовое предположение: iso-8859-1; результат: 2 = educação
Для A1 / B2 строка может быть UTF8 (educação) или латинской1 (educação o). Второй выглядит некорректно, но Encode :: Guess не может сказать - Guess использует кодировки символов и не говорит по-португальски!
Теперь, если я заменю 'используйте Encode :: Guess qw / utf8 iso-8859-1 /;' используя 'Encode :: Guess;' Я получаю
A2: encoding guess: utf8; result: 1 = educação
latin-1 больше не является опцией (она не является частью значения по умолчанию), поэтому результат получается как utf8.
B2: ERROR: Can't guess: iso-8859-1 or utf8 for 1 = educação
В B2 с попаданием мы вернулись в описанном выше сценарии, и Угадай не может решить.
Для C2:
C2: ERROR: Can't guess: No appropriate encodings found! for 2 = educação
это имеет смысл, так как латиница-1 не является частью значения по умолчанию. Наконец в D2
D2: encoding guess: iso-8859-1; result: 2 = educação
намекается на латиницу-1, поэтому определяется кодировка.