2014-01-29 114 views
1

我正在Python中開發CGI腳本。我在我的服務器上運行了一個基本的「Hello World」腳本,它運行良好,但是我嘗試在我的Windows筆記本電腦上(在Sublime text 2中)寫入並複製了Apache 500錯誤,並且沒有任何調試信息。最後,我將HelloWorld腳本的文本複製到了Windows中,並將其粘貼到一個.py文件中,然後將其複製回來,只是發現它仍然無效。我認爲這可能是一個權限錯誤,但這兩個文件具有完全相同的權限。在納米,他們看起來完全一樣,但一個有效,一個沒有。我發現通過使用sdiff,他們有些不同,儘管所有文本都是相同的,但它們是完全不同的文件。我嘗試了一個十六進制轉儲,發現雖然文本是相同的,但1和0是不同的。有誰知道是否有某種編碼,我可以在python中設置,以防止Apache拋出錯誤?Linux將不同的.py文件標識爲不同

我的終端屏幕截圖顯示文件並排和十六進制轉儲。 test.py是可正常運行的Linux CGI腳本。 Orig.py是我從Windows複製的腳本。 copied.py是test.py的一個副本,我用它來演示sdiff在兩個文件相同時的輸出結果。

enter image description here

更新:經過編碼,這兩個文件輸出 text/x-java; charset=us-ascii

+1

行結束Windows使用'\ n \ r'而Linux使用'\ N',雖然我從來沒有遇到過這樣的問題順便說一下:圖像很沒用,你不能從終端拷貝粘貼文本嗎? – Bakuriu

回答

2

它是一個行結束差,作爲Bakuriu提到。

注意在十六進制輸出:

的「test.py」文件,...0a在「orig.py」文件,...0d0a的結束而結束。

0a對應於換行符\n,而0d對應於換行符'\ r'。

如果你在Vim中打開'orig.py',你應該在行尾看到^M。 歡迎跨平臺開發娛樂和遊戲(:?

您可以使用一個程序像dos2unix來解決這個問題

+0

'dos2unix'解決了它,謝謝! – ecapstone

相關問題