Загрузка файла PHP через ftp, как это сделать с учетом utf8? - PullRequest
3 голосов
/ 27 июля 2011

На внешнем FTP-сервере есть файл .TXT с кодировкой utf8 (если я прав). Я хочу скачать это через скрипт php на свой собственный сервер ftp. Итак, я написал скрипт, но когда я смотрю на .txt, я вижу символы с символом, который должен быть похож на Ã «n. Как я могу сделать это правильно? (также, если я снова запускаю тот же скрипт, я хочу заменить старый файл новым новым ). Это мой код:

<?php
// connecting with ftp server
$connection_id = ftp_connect('ftp.example.com'); 
// login with username and password
$login = ftp_login($connection_id, 'username', 'password'); 

// check connection
if ((!$connection_id) || (!$login)) {
   echo 'FTP connection has failed.';
   exit();
} else {
   echo 'Connection succeeded.';
}

$local_file = 'home/file.TXT'; 
$server_file = '/file.TXT';

// open file
$handle = fopen($local_file, 'w+');

// try to download txt file and save it locally
if(ftp_fget($connection_id, $handle, $server_file, FTP_BINARY, 0)) {
     echo 'Succesfully written to '.$local_file;
} else {
    echo 'Not succesfully downloaded!';
}

// close file handler
 fclose($handle);

//close the connection
ftp_close($connection_id);
?>

Кстати, кто-нибудь знает, как упростить отображение кода в стеке, не делая отступ в каждой строке, нажимая четыре раза на пробел?

Ответы [ 3 ]

1 голос
/ 27 июля 2011

PHP-код, вероятно, в порядке;его не волнует, в какой кодировке находится файл, он просто копирует необработанные данные файла через FTP.

Более вероятная проблема заключается в том, что ваше устройство чтения файлов TXT не поддерживает кодировку UTF-8.Вы проверили, что программа чтения текстовых файлов может отображать символы UTF-8 в других файлах?

1 голос
/ 27 июля 2011

Вы используете двоичную передачу, поэтому она загружает ее с сервера как есть. Если файл неверный после загрузки, значит, он находится на сервере.

0 голосов
/ 27 июля 2011

Передача Bynary ftp не затрагивает кодировку символов текстового файла. Копирует на уровне битов. Неважно, какие данные он передает.

Вы пытались открыть как локальный, так и серверный файл в текстовом редакторе? Если они выглядят одинаково, это может означать только две вещи: 1. Файл не UTF-8 на сервере, и это означает, что копия также не будет. 2. Ваш редактор / программа просмотра не поддерживает UTF-8 (или он не знает, что текст должен отображаться как UTF-8).

...