2011-02-04 62 views
3
self.response.out.write("\n") 

當我使用text屬性,然後打印回它打印在一行中上傳多的數據.... 我上傳的ASCII碼六.... 所以回車是0x10的,但是從數據存儲ASCII pringing時,新的生產線沒有插... 而是打印爲單條線打印新的生產線

import cgi 
#import codecs 
print 'Content-Type: text/plain' 
print '' 
print 'Hello, world!' 

from google.appengine.ext import webapp 
from google.appengine.ext.webapp.util import run_wsgi_app 
from google.appengine.ext import db 

import operator 

class Vault(db.Model): 
    username=db.StringProperty() 
    filename=db.StringProperty() 
    data=db.TextProperty() 

op="" 
op1="" 
username="" 
filename="" 


class MainPage(webapp.RequestHandler): 
    def get(self): 
     stri="" 
     global username 
     global filename 
     stri="" 
     username = self.request.get("name") 
     filename=self.request.get("filename") 
     mac=self.request.get("mac") 
     mac=mac.replace(':','') 
     q=db.GqlQuery("SELECT * FROM Vault WHERE filename=:1",filename) 
     for vault in q: 
      stri=cgi.escape(vault.data) 
     s=0 
     e=12 
     cycle=len(stri)/12 
     z="" 
     for j in range(cycle): 
      plain=stri[s:e] 
      #print plain 
      s1=0 
      s2=2 
      for i in range(6): 
       x=int(plain[s1:s2],16) 
       y=int(mac[s1:s2],16) 
       s1=s1+2 
       s2=s2+2 
       z+=chr(operator.xor(x,y)) 
      mac=plain 
      s=s+12 
      e=e+12 
     print z 

application = webapp.WSGIApplication([('/dec', MainPage)],debug=True) 

def main(): 
    run_wsgi_app(application) 

if __name__ == "__main__": 
    main() 
+0

請不要在WSGI應用程序中使用`print`。使用`self.response.out.write`,從不`打印`。代碼頂部的聲明不會做你認爲他們會的東西,無論是。 – 2011-11-24 00:11:53

回答

8

你在哪裏打印數據返回出來?如果它位於HTML內部(除非它被<pre>標籤包圍),則無論EOL是由\n還是\r\n指示,換行符都將被忽略。

如果這是發生了什麼事情,你可以做

self.response.out.write(myString.replace("\n", "<br />")) 
+0

@bgporter:我正在加密數據並將十六進制ascii值存儲在數據存儲中。當我解密十六進制ascii和打印它使用self.response.out.write(z)[其中z cantains解密ascii值]它打印在一條直線.... – HariHaraSudhan 2011-02-04 17:13:03

+0

@HariHaraSudhan這應該沒關係,除非您的解密功能不知何故被打破。正如@Hugh在迴應中所暗示的那樣 - 使用瀏覽器的查看源查看響應。如果它看起來正確,那麼您的瀏覽器會將內容解釋爲HTML,這會忽略換行符。您可以將Content-type標題設置爲「text/plain」的回覆來強制執行該問題。 – bgporter 2011-02-04 17:16:08

3

在Web瀏覽器,嘗試尋找在使用「查看頁面源代碼」的結果。

如果換行符在那裏看起來正確,那麼@bgporter具有正確的解決方案。