import cgi,os,sys,time from snakeserver.snakelet import Snakelet from snakeserver.webform import FormUploadedFile, FormFileUploadError # this one reads the form post using iso-8859-15 encoding class FormAccepter(Snakelet): sessionType=Snakelet.SESSION_NOT_NEEDED def setInputEncoding(self, request): request.encoding="iso-8859-15" def serve(self, request, response): self.setInputEncoding(request) form = request.getForm() requiredEnc = request.getParameter("outputencoding"); text = request.getParameter("text") if not requiredEnc: requiredEnc = sys.getdefaultencoding() response.content_type="text/html" response.encoding=requiredEnc out = response.getOutput() print >>out,'
' print >>out, ""
print >>out, "Content type=", self.escape(request.getContentType()),"
"
print >>out, "Content length=", request.getContentLength(),"
"
print >>out, "Request char enc=", request.encoding,"
"
print >>out, "Default encoding="+sys.getdefaultencoding(),"
"
print >>out, "Out encoding="+requiredEnc,"
"
print >>out, "
" if text: print >>out, "
TEXT={"+text+"} length=",len(text)," type=",self.escape(repr(type(text)))
print >>out, "
TEXT BYTES: { "
for c in text:
print >>out, hex(ord(c)), " "
print >>out, " }
"
else:
print >>out, "
NO TEXT!!
"
ok=True
print >>out, "
"
if type(text) is unicode:
print >>out,"✓ type of text is unicode.
"
else:
print >>out,"✗ type of text is not unicode!
"
ok=False
if len(text)==4:
print >>out,"✓ text consists of 4 characters.
"
else:
print >>out,"✗ text does not consist of 4 characters!
"
ok=False
if text==u'\u20ac\u00eb\u00a9\u2661':
print >>out,"✓ text contains the correct unicode characters.
"
else:
print >>out,"✗ text does not contain the correct unicode characters!
"
ok=False
if not ok:
print >>out,"Something is wrong! The characters have not been processed correctly
"
print >>out,"
This is what you should see:
TEXT={€ë©♡} length= 4 type= <type 'unicode'>
TEXT BYTES: { 0x20ac 0xeb 0xa9 0x2661 }