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


PHP scripts changing to random characters when uploading FTP

这里有点奇怪的问题。

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

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

例如,此代码:

<?php echo 'hello world'; ?>

变成

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

我的FTP传输模式设置为ASCII。我做错了什么吗?FTP设置不好吗?

谢谢Peter

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

祝你的新办公室好运!xD

只有当您使用纯文本文件,并且只有当您的代码、脚本需要正确编码文本文件时,ASCII模式的ftp传输才有用。

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

希望已经清楚了。。。请随意纠正我的英语!