上传FTP时PHP脚本更改为随机字符

时间:2012-07-31 16:00:53

标签: php ftp ascii filezilla

这里有点奇怪的问题。

我在工作机器上使用FileZilla和Notepad ++。

基本上每当我上传PHP脚本时,所有代码都变成随机字符

例如这段代码:

<?php echo 'hello world'; ?>

变成

<?php ਍攀挀栀漀 ✀栀攀氀氀漀✀㬀ഀ ?>

我的FTP传输模式设置为ASCII。我做错了什么,这是一个糟糕的FTP设置吗?

由于 彼得

2 个答案:

答案 0 :(得分:1)

祝你新办公室好运!的xD

使用ASCII模式的ftp trasfer仅在您使用纯文本文件时才有用,并且只有在您需要正确编码文本文件的代码(脚本)时才有用。

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); 
希望能够清楚...... 随意纠正我的英语!

答案 1 :(得分:1)

您的ftp客户端会阻止您输入的字符集。将上传模式更改为二进制,您就完成了。