CGI中的特殊字符Python \\ xe4notä

时间:2017-12-14 12:40:56

标签: python python-3.x character-encoding cgi special-characters

Python cgi脚本接收内容类型为: application / x-www-form-urlencoded 的POST XMLHttpRequest。值未编码。 这看起来像这样:

  xhr.open("POST", "URL", true);
  xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  xhr.send('RID=123&RName=Bäcker');

在Chromes开发人员工具中,数据源中的表单数据在源代码中如下所示:

RID = 123&安培; RNAME =背衬

或在解析视图中这样:

RID :123

RName :Bäcker

python3脚本在fieldstorage中获取表单:

#! /usr/bin/env python3    
# -*- coding: UTF-8 -*-
import cgi
myform = cgi.FieldStorage()
print(str(myform["RName"].value))

打印输出是B \ xe4cker? 我曾尝试使用.encode('iso-8859-1')或解码('utf-8'),但它不是很成功。

如何更改正确显示的编码或代码类型?

1 个答案:

答案 0 :(得分:2)

尝试将编码添加到str()功能:

#! /usr/bin/env python3    
# -*- coding: UTF-8 -*-
import cgi
myform = cgi.FieldStorage()
print(str(myform["RName"].value, encoding = 'iso-8859-1'))