关于python:Ascii编解码器不能编码字符

Ascii codec can't encode character

我正在运行一个带有文本输入的Flask Web服务,但现在我遇到了一个问题,即文本输入有时由不包含在ASCII字符集中的字符组成(错误示例:"(错误:未提供文本)"ASCII"编解码器无法对位置20中的字符U'u2019'进行编码。)

我的Flask Web服务代码如下(有些)所示:

1
2
3
4
5
6
7
8
9
10
class Classname(Resource):
    def __init__(self):
       self.reqparse = reqparse.RequestParser()
       self.reqparse.add_argument('text', type=str, required=True, help='Error: no text provided')
       super(Classname,self).__init__()

    def post(self):
       args = self.reqparse.parse_args()
       text = args['text']
       return resultOfSomeFunction(text)

我已经尝试将ascii字符串转换为unicode,但没有成功(错误:"unicode"对象不可调用)。我还试图补充:

1
text = re.sub(r'[^\x00-\x7f]',r' ',text)

规则之后

1
text = args['text']

但这也给了我同样的错误("ascii"编解码器不能编码字符)。

我怎么解决这个问题?


你试过从self.reqparse.add_argument('text', type=str, required=True, help='Error: no text provided')中删除type=str吗?

Note:

The default argument type is a unicode string. This will be str in
python3 and unicode in python2

来源:http://flask-restful-cn.readthedocs.org/en/0.3.4/reqparse.html