我正在使用Python开发CGI脚本。我在我的服务器上运行了一个基本的“Hello World”脚本,它工作得很好,但是我尝试在我的Windows笔记本电脑上编写的所有内容(在Sublime文本2中)并且复制了抛出Apache 500错误,没有任何调试信息。最后,我将我的HelloWorld脚本的文本复制到了Windows,将其粘贴到.py文件中,然后将其复制回来,却发现它仍然无效。我认为它可能是一个权限错误,但这两个文件具有完全相同的权限。在nano中,它们看起来完全相同,但是一个有效,一个没有。我发现使用sdiff
有一些不同的东西,它们说它们是完全不同的文件,即使所有文本都是相同的。我尝试了一个十六进制转储,发现尽管文本是相同的,但是1和0是不同的。有谁知道我是否可以在python中设置某种编码以防止Apache抛出错误?
我的终端的屏幕截图,显示并排的文件和十六进制转储。 test.py是可正常工作的linux CGI脚本。 Orig.py是我从windows复制的脚本。 copied.py是test.py的副本,我用它来演示sdiff
在两个文件时应该输出的内容是完全相同的。
更新:检查编码,两个文件都输出
text/x-java; charset=us-ascii
答案 0 :(得分:2)
正如Bakuriu所提到的那样,这是一种线路结尾的差异。
请注意十六进制输出:
'test.py'文件以...0a
结尾,其中'orig.py'文件以...0d0a
结尾。
0a
对应换行\n
,而0d
对应换行符`\ r'。
如果你在Vim中打开'orig.py',你应该在行的末尾看到^M
。
欢迎来到跨平台开发的乐趣和游戏(:
您可以使用dos2unix
之类的程序来解决此问题。