2017-02-14 3 views
0

Ich kann diese Information nirgends bekommen.Python 2 cgi Feld Speicher Post Variable Codierung

Weiß jemand, was die Codierung einer Zeichenfolge ist, die über ein Python-CGI-Feldspeicherobjekt abgerufen wird?

Zum Beispiel, ich habe dieses HTML-Formular:

<!DOCTYPE html> 
<html> 
<link rel="stylesheet" type="text/css" href="style.css"/> 
<body> 
    <form id="mainForm" method="post" action="./uploadArticle.py"> 
     <input type="text" name="articletitle" /></br> 
     <textarea name="articlebody" rows="50" cols="100"/></textarea></br> 
    <input type="submit"/> 
    </form> 
</body> 
</html> 

Dass ich durch diese Python-Datei mit Apache-Prozess:

import cgi 
form = cgi.FieldStorage() 
title = form["articletitle"].value 
content = form["articlebody"].value 

Will Titel und Inhalt utf8 kodierten Strings werden?

Antwort

0

Die Frage zeigt ein wenig Verwirrung darüber, was Codierung ist.

Daten, die über das Internet empfangen werden, sind nur Bytes. Python hat keine Möglichkeit zu wissen, welche "Kodierung" es ist; Das hängt ganz davon ab, wie es produziert wurde.

In Python 3 sind diese Daten ein bytestring; In Python 2 wird es eine Zeichenfolge sein, aber keine von beiden hat eine intrinsische Codierung.

Wenn Sie die Quellcodierung kennen, können Sie sie in eine Unicode-Zeichenfolge dekodieren; utf-8 ist eine gute Vermutung und wird in den meisten Fällen das Richtige tun, aber es kann falsch sein.

+0

Ich sehe. Nehmen wir an, ich möchte die Titelvariable, die rohe Bytes enthält, in eine lesbare Zeichenfolge dekodieren. Die Codierung, die ich verwenden würde, hängt von der Art und Weise ab, wie die Zeichenfolge "von der Form" codiert wurde. – JeD

+0

Nun, nicht die Form, sondern der Computer, auf dem die Daten eingegeben wurden, aber ja. Wie gesagt, utf-8 ist normalerweise eine ziemlich sichere Schätzung. –