Похоже, кодировка имен файлов указана в ISO Latin 1, но страница по умолчанию интерпретируется с использованием UTF-8.Символы появляются не как «вопросительные знаки», а как символы замены Юникода (�).Это означает, что браузер, который пытается интерпретировать поток байтов как UTF-8, обнаружил недействительный байт в UTF-8 и вместо этого вставляет символ в этой точке.Переключите ваш браузер на ISO Latin 1 и увидите разницу (View> Encoding> ...).
Итак, вам нужно преобразовать строки из ISO Latin 1 в UTF-8, если вы назначитеВаша страница должна быть в кодировке UTF-8.Для этого используйте mb_convert_encoding($file, 'UTF-8', 'ISO-8859-1')
.
Почему это работает, если указать кодировку $from
как pass
Я могу только догадываться.Что вы говорите mb_convert_encoding
с этим, так это конвертировать из pass
в UTF-8.Я полагаю, что mb_convert_encoding
принимает значение mb_internal_encoding
в качестве кодировки $from
, что соответствует ISO Latin 1. Я предполагаю, что оно эквивалентно 'auto'
при использовании в качестве параметра $from
.