Сценарии PHP меняются на случайные символы при загрузке FTP
Немного странная проблема здесь.
Я использую FileZilla и Notepad++ на моей рабочей машине.
В основном, когда я загружаю скрипт PHP, весь код превращается в случайные символы
Например этот код:
<?php echo 'hello world'; ?>
превращается в
<?php 攀挀栀漀 ✀栀攀氀氀漀✀㬀ഀ ?>
Мой режим передачи по FTP установлен в ASCII. Я делаю что-то не так, это плохая настройка FTP?
Спасибо Питер
2 ответа
Ваш FTP-клиент загружает кодировку вашего ввода. Измените режим загрузки на бинарный, и все готово.
Удачи в вашем новом офисе! XD
Трассировка ftp с режимом ASCII полезна (была) только в том случае, если вы используете простые текстовые файлы и только если у вас есть код, скрипт, для которого нужны правильно закодированные текстовые файлы.
режим ASCII фактически означает "обрабатывать этот файл как текстовый файл"
текстовые файлы, которые вам могут понадобиться для правильного кодирования, являются "действительно текстовыми":txt, ini, conf (php выводит html/xml, тогда окончания строк не имеют значения)
замены, сделанные в режиме FTP ASCII на байты, заканчивающиеся строкой, могут повредить весь файл с некоторыми кодировками... на самом деле этого не должно происходить с UTF-8, тогда, очевидно, вы используете какую-то другую кодировку...
на мой взгляд, в 2012 году лучше сохранить файл в том виде, в котором он был загружен: клиент, сценарии и приложения должны иметь возможность правильно анализировать любой текстовый файл любой системы.
затем: загрузите как двоичный файл и убедитесь, что ваши скрипты могут обрабатывать любые последовательности байтов, заканчивающиеся строкой
например, если вам нужно разделить на конец строки, используйте
// works everywhere with any file with any line ending
preg_split('/\r\n|\r|\n/', $text);
вместо
// works everywhere but only with files that contain
// line endings equivalent to the actual PHP_EOL content
explode(PHP_EOL, $text);
надеясь, что все будет ясно... не стесняйтесь исправлять мой английский!