PHP iconv от utf-8 до windows-1252 без специальных символов

Я пытаюсь закодировать содержимое файла следующим образом:

$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.

Что я делаю неправильно?

0

Решение

Первые 127 символов, используемые в ASCII, ANSI (ISO-8859-1), Windows-1252 и UTF8, одинаковы, поэтому невозможно определить, что такое «кодировка», просто взглянув на документ, содержащий только символы из этого установлено: они все одинаково применимы.

Современные редакторы увидят это и скажут: «Это 2018 год, поэтому я скажу вам, что это UTF8», и они даже не ошибутся: пока вы не добавите эти специальные символы, все эти схемы кодирования взаимозаменяемы. Только после того, как вы введете символы старшего байт-кода, вы должны будете четко указать, какой должна быть кодировка.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]