在问这个问题之前,我已经检查了类似的其他帖子。提供的答案只是简单地压制了警告,而不是提出补救措施。
我有一个用Python + Flask编写的Web应用程序,它处理以unicode格式用jquery发送的异步请求。
Content-Type:application/json; charset=UTF-8
以下是从我的Web浏览器发送到服务器的数据示例。数据可以是拉丁字符和非拉丁字符的混合。我注意到非拉丁字符被编成法典但拉丁字符不是。
身体:“ХочÑÑÑ...оÐ'иÑ,ÑÐÐÐÐ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ÐÐμÑмоÑ,ÑÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐ~~~~~~~ ѓильмÐ'олжÐμнбÑ<Ñ,ьприкольнÑ<м。 Ð'оÑ,Ðμго опиÑаниÐμ http://www.allocine.fr/film/fichefilm_gen_cfilm=202971.html“
以下是MySqlAlchemy类的定义
class Post(db.Model):
id = db.Column(db.Integer, primary_key=True)
body = db.Column(db.Unicode(1024))
现在,当我尝试将数据提交到数据库时,我收到以下错误:
SAWarning:Unicode类型接收到非unicode绑定参数值 param.append(processorskey)
在我使用Flask-Restful组件处理HTTP请求之间:
class PostListApi(Resource):
decorators = [login_required]
def post(self):
body=request.json['body']
post = Post(body=body)
db.session.add(post)
db.session.commit()
问题是我应该如何在服务器端正确处理数据,以确保不会将非unicode字符写入数据库?
答案 0 :(得分:3)
您可以简单地强制身体进行unicode。
class PostListApi(Resource):
decorators = [login_required]
def post(self):
body=request.json['body']
post = Post(body=unicode(body))
db.session.add(post)
db.session.commit()