2012-07-31 71 views
0

这里有点奇怪的问题。上传FTP时将PHP脚本更改为随机字符

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

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

例如下面的代码:

<?php echo 'hello world'; ?> 

变成

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

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

感谢 彼得

+0

你能从ascii切换到utf-8吗? – mnmnc 2012-07-31 16:04:23

+0

记事本+ +让你玩弄你的文件编码? (如mnmnc所说)。如果不尝试使用IDE。 – Cups 2012-07-31 16:06:11

+0

我不认为这是一个记事本++的设置,因为普通的记事本完全一样。奇怪的部分是它保持<?php标签。它也不是服务器配置,因为它在家里工作的很好。我会尝试记事本++设置 – 2012-07-31 16:09:47

回答

1

您的ftp客户端会打乱您的输入的字符集。将上传模式更改为二进制,即可完成。

+0

在y编辑器中我的编码问题,我正在使用UTF-8 t当时 – 2012-08-06 11:46:00

+1

奇怪,我在昨天和昨天的二进制文件上尝试了它,现在它的工作正常!?我摆脱了我目前的剧本(我写的),并转而使用codigniter,它的工作很棒!我仍然认为这是一个二进制/ acsii问题,所以你得到答案,欢呼! – 2012-08-06 11:49:47

1

好运您的新办公室! xD

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

的ASCII模式实际上是指“处理这个文件为文本文件”

文本文件,您可能需要正确编码是“真正的文字的人”: TXT,INI,CONF(PHP输出HTML/XML,然后行尾无关)

通过FTP ASCII模式下所作的替代品,到行结束字节(S),可能会损坏整个文件,有一些编码...其实这应该不会发生在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); 

希望能清楚... 随时纠正我的英语!