2011-07-27 55 views
3

在外部FTP服務器上有一個帶有utf8編碼的.TXT文件(如果我是正確的話)。我想通過一個php腳本將它下載到我自己的ftp服務器上。 所以我寫了一個腳本,但是當我看.txt時,我看到角色應該是é看起來像ën。 我該如何做到這一點是正確的? (另外,如果我再次運行相同的腳本,我希望舊文件被替換爲新文件)。這是我的代碼:通過ftp下載PHP文件,如何用utf8來做到這一點?

<?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); 
?> 

順便說一句,不硬骨素懂得按空間四次,使生活更輕鬆表示沒有縮進每一行代碼計算器?

+0

'$ local_file'或'$ localfile'?無論如何,FTP傳輸是不知道文件內容的,您只需獲取文件中的任何內容即可。看起來這個文件是用UTF-8編碼的,所以就這樣對待它。 –

+0

在下載文件後,您「查看」文件的哪種方式?本地編輯器?網頁瀏覽器? – Marco

+0

我通過本地編輯器和firefox查看它。 @Kerrek SB,thnx注意到了! – Orhan

回答

0

Bynary ftp transfer不會觸及文本文件的字符編碼。它在比特級複製。它不關心它傳輸的是什麼類型的數據。

您是否嘗試在文本查看器/編輯器中打開本地文件和服務器文件? 如果它們看起來相同,這可能意味着只有兩件事: 1.服務器上的文件不是UTF-8,這意味着該副本不會是。 2.您的編輯器/查看器不支持UTF-8(或不知道文本應顯示爲UTF-8)。

+0

服務器上的文件是utf-8,我不知道如何看它是否是實際的,但服務器管理員告訴我這樣。 Firefox可以顯示utf-8我猜? – Orhan

+0

它可以,但確保它將文件解釋爲utf8(查看菜單 - 字符編碼)。 – Maerlyn

+0

Firefox沒有將其顯示爲utf-8,你們都沒事! – Orhan

1

您正在使用二進制傳輸,因此它正在從服務器上下載它。如果下載後文件不正確,那麼它在服務器上。

+1

二進制傳輸與它無關。舊的(甚至不再適用)二進制與文本模式隻影響行尾。 UTF-8以任何可能的方式是「二進制安全」的。 –

+0

謝謝,我不知道lineendings是唯一受模式影響的想法。 – Maerlyn

1

PHP代碼可能沒問題;它不關心文件的編碼是什麼,它只是通過FTP複製原始文件數據。

更可能的問題是您的TXT文件閱讀器無法處理UTF-8編碼。你有沒有檢查過你的文本文件閱讀器可以在其他文件中顯示UTF-8字符?

相關問題