Я пытаюсь закодировать содержимое файла следующим образом:
$f_file = fopen("dreams.txt", "w");
$string = "Los sueños se cumplen.";
$string_encoded = iconv( mb_detect_encoding( $string ), 'Windows-1252//TRANSLIT', $string );
fwrite($f_file, $string_encoded);
fclose($f_file);
Если $ строка включает специальный символ, такой как «ñ» или «á», файл сохраняется в кодировке Windows-1252, но если $ строка не включает их, файл кодируется как UTF-8. Мне нужен файл с кодировкой Windows-1252.
Что я делаю неправильно?
Первые 127 символов, используемые в ASCII, ANSI (ISO-8859-1), Windows-1252 и UTF8, одинаковы, поэтому невозможно определить, что такое «кодировка», просто взглянув на документ, содержащий только символы из этого установлено: они все одинаково применимы.
Современные редакторы увидят это и скажут: «Это 2018 год, поэтому я скажу вам, что это UTF8», и они даже не ошибутся: пока вы не добавите эти специальные символы, все эти схемы кодирования взаимозаменяемы. Только после того, как вы введете символы старшего байт-кода, вы должны будете четко указать, какой должна быть кодировка.
Других решений пока нет …