(必解决)新版Flask返回中文乱码解决,unicode编码

问题描述

  当flask实现的接口响应中存在中文时,接口返回为unicode乱码。

其实这个是ASCII码。

使用在线转换工具转换看看效果。

问题排查

网上找了很多资料都是说,在创建flask app时,关闭ascii编码方式

app = Flask(__name__)
app.config['JSON_AS_ASCII'] = False  # 解决中文乱码问题

这个针对flask 2.2.5以下的版本确实是可行的,但是高版本就失灵了,这魔法师灵了。

还好我的开发环境Flask有多个版本;

稍微老点的:Flask 2.2.5

最新的版本:Flask 2.3.3

同一份代码,两个版本一个生效一个不生效,那基本确定是版本的原因了。

于是就去翻看了官方的版本更新日志,终于找到了原来在版本 2.3.0时已经弃JSON_AS_ASCII这个属性了。那么新版要怎么处理呢,这里就不多赘述,先直接上解决办法,想深入研究的同学,可以翻到后面继续看。

问题解决

flask 2.3.0以上

app = Flask(__name__)
app.json.ensure_ascii = False # 解决中文乱码问题

flask 2.2.5以下

app = Flask(__name__)
app.config['JSON_AS_ASCII'] = False  # 解决中文乱码问题

重启项目代码。

这里说下为啥要关闭ascii编码方式呢,那是因为Flask初始化app时默认是开启的,所以咱们在自己做项目时,按需求将其开启或关闭。

此时再看看接口返回,已经正常返回中文。

Flask版本的坑

flask更新日志:

Changes — Flask Documentation (2.3.x)

从上图就可看出,2.3.0版本已经将JSON_AS_ASCII属性移除了。

那新版本的要怎么设置呢,下面这篇文章已经指出。

API — Flask Documentation (2.3.x)

英文不好的同学可以看翻译

  • 29
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值