最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

解決flask接口返回的內(nèi)容中文亂碼的問(wèn)題

 更新時(shí)間:2020年04月03日 10:04:12   作者:dushu990  
這篇文章主要介紹了解決flask接口返回的內(nèi)容中文亂碼的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

寫一個(gè)簡(jiǎn)單的例子程序:

# coding:utf-8
import flask
from flask import json, jsonify, request, render_template

app = flask.Flask(__name__)

@app.route("/api", methods=["GET", "POST"])
def api():
 if request.method == 'GET':
  return jsonify({"login status": "成功1"})
 elif request.method == "POST":
  data = request.get_data()
  data = json.loads(data)
  if data["name"] == "dom":
   return jsonify({"login": "成功2"})
  else:
   return jsonify({"login": "fail"})

if __name__ == "__main__":
 app.run(host='127.0.0.1', port='8080')

運(yùn)行后訪問(wèn)網(wǎng)頁(yè),內(nèi)容中的中文顯示亂碼

解決方式:

給app配置app.config[‘JSON_AS_ASCII'] = False,即:

if __name__ == "__main__":
 app.run(host='127.0.0.1', port='8080')

變?yōu)椋?/p>

if __name__ == "__main__":
 app.config['JSON_AS_ASCII'] = False
 app.run(host='127.0.0.1', port='8080')

補(bǔ)充知識(shí):Flask中 request.files.get('file') 后的文件對(duì)象在讀取時(shí)(中文)亂碼

一、問(wèn)題引出

我們通常需要接收前端發(fā)送過(guò)來(lái)的文件,而在Flask中通常采取file_obj = request.files.get(‘file') 的方式獲取文件對(duì)象,按照Flask官方文檔的介紹,返回值 file_obj 是一個(gè)文件對(duì)象,但是我們平常在使用時(shí)通常是在open() 函數(shù)中指定打開方式的,可是這里并不知道這個(gè)文件對(duì)象中的數(shù)據(jù)是何種編碼方式,因此就會(huì)出現(xiàn)中文亂碼的問(wèn)題。如下所示:當(dāng)上傳的文件內(nèi)容中包含中文時(shí)就會(huì)出現(xiàn)亂碼:

file_obj = request.files.get('file')
file_content = file_obj.read()
print('答案內(nèi)容為:', file_content)

二、解決過(guò)程探索

通過(guò)Flask的官方文檔及源碼得知:

request.files 包含了所有上傳文件的MultiDict對(duì)象。文件中的每個(gè)鍵都是來(lái)自 "的名稱。文件中的每個(gè)值都是一個(gè)Werkzeug FileStorage對(duì)象。參考:Flask API

而類 FileStorage 是被這樣描述的:FileStorage類是傳入文件的一個(gè)簡(jiǎn)單包裝。請(qǐng)求對(duì)象使用它來(lái)表示上傳的文件。并且 FileStorage 提供了一些方法,最長(zhǎng)用的就是如下幾個(gè):參考:Werkzeug DataStructures

filename   The filename of the file on the client.
name   The name of the form field.
save   (dst, buffer_size=16384)Save the file to a destination path or file object. If the destination is a file object you have to close it yourself after the call. The buffer size is the number of bytes held in memory during the copy process. It defaults to 16KB. 等等

但是并沒有找到Flask在得到這個(gè)文件對(duì)象時(shí)的編碼方式。

三、解決辦法

先從文件對(duì)象中將內(nèi)容讀出,然后再按照我們想要的格式解碼(通常 utf-8)。

file_obj = request.files.get('file')
file_content = file_obj.read()
file_content = file_content.decode("utf-8")
print('答案內(nèi)容為:', file_content)

這樣文件中的中文內(nèi)容就不會(huì)亂碼了。

以上這篇解決flask接口返回的內(nèi)容中文亂碼的問(wèn)題就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • pandas.loc 選取指定列進(jìn)行操作的實(shí)例

    pandas.loc 選取指定列進(jìn)行操作的實(shí)例

    今天小編就為大家分享一篇pandas.loc 選取指定列進(jìn)行操作的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • 基于Python開發(fā)Excel字符截取工具

    基于Python開發(fā)Excel字符截取工具

    這篇文章主要為大家詳細(xì)介紹了如何使用PyQt5和Pandas開發(fā)一個(gè)Excel字符截取工具,可以用簡(jiǎn)便的方式對(duì)Excel表格中的文本進(jìn)行截取處理,需要的可以了解下
    2025-03-03
  • pow在python中的含義及用法

    pow在python中的含義及用法

    在本篇文章里小編給各位分享了關(guān)于pow在python中是什么意思的相關(guān)知識(shí)點(diǎn)內(nèi)容,有需要的朋友們參考學(xué)習(xí)下。
    2019-07-07
  • python字符串循環(huán)左移

    python字符串循環(huán)左移

    這篇文章主要為大家詳細(xì)介紹了Python字符串循環(huán)左移,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-03-03
  • Python條件語(yǔ)句與循環(huán)語(yǔ)句

    Python條件語(yǔ)句與循環(huán)語(yǔ)句

    這篇文章主要介紹了Python條件語(yǔ)句與循環(huán)語(yǔ)句,條件語(yǔ)句就是通過(guò)指定的表達(dá)式的運(yùn)行結(jié)果來(lái)判斷當(dāng)前是執(zhí)行還是跳過(guò)某些指定的語(yǔ)句塊,循環(huán)語(yǔ)句就是對(duì)某些語(yǔ)句的重復(fù)執(zhí)行,這個(gè)重復(fù)執(zhí)行是通過(guò)指定表達(dá)式來(lái)控制的,下面來(lái)看具體內(nèi)容及續(xù)航管案例吧,需要的朋友可以參考一下
    2021-11-11
  • Matlab實(shí)現(xiàn)時(shí)間序列預(yù)測(cè)分類實(shí)例代碼

    Matlab實(shí)現(xiàn)時(shí)間序列預(yù)測(cè)分類實(shí)例代碼

    時(shí)間序列是按時(shí)間順序排列的、隨時(shí)間變化且相互關(guān)聯(lián)的數(shù)據(jù)序列,這篇文章主要給大家介紹了關(guān)于Matlab實(shí)現(xiàn)時(shí)間序列預(yù)測(cè)分類的相關(guān)資料,需要的朋友可以參考下
    2021-07-07
  • Python命令啟動(dòng)Web服務(wù)器實(shí)例詳解

    Python命令啟動(dòng)Web服務(wù)器實(shí)例詳解

    這篇文章主要介紹了Python命令啟動(dòng)Web服務(wù)器實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • Python基礎(chǔ)之元編程知識(shí)總結(jié)

    Python基礎(chǔ)之元編程知識(shí)總結(jié)

    很多人不理解“元編程”是個(gè)什么東西,關(guān)于它也沒有一個(gè)十分準(zhǔn)確的定義.這篇文章要說(shuō)的是Python里的元編程,實(shí)際上也不一定就真的符合“元編程”的定義.只不過(guò)我無(wú)法找到一個(gè)更準(zhǔn)確的名字來(lái)代表這篇文章的主題,所以就借了這么一個(gè)名號(hào),需要的朋友可以參考下
    2021-05-05
  • Python使用DrissionPage中ChromiumPage進(jìn)行自動(dòng)化網(wǎng)頁(yè)操作

    Python使用DrissionPage中ChromiumPage進(jìn)行自動(dòng)化網(wǎng)頁(yè)操作

    DrissionPage 作為一款輕量級(jí)且功能強(qiáng)大的瀏覽器自動(dòng)化庫(kù),為開發(fā)者提供了豐富的功能支持,本文將使用DrissionPage中ChromiumPage進(jìn)行自動(dòng)化網(wǎng)頁(yè)操作,希望對(duì)大家有所幫助
    2025-03-03
  • 詳解Selenium如何使用input標(biāo)簽上傳文件完整流程

    詳解Selenium如何使用input標(biāo)簽上傳文件完整流程

    這篇文章主要介紹了詳解Selenium如何使用input標(biāo)簽上傳文件完整流程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05

最新評(píng)論

东兰县| 清徐县| 呼图壁县| 库伦旗| 罗甸县| 石嘴山市| 若尔盖县| 阳泉市| 安多县| 正镶白旗| 吴忠市| 南陵县| 晋宁县| 师宗县| 太保市| 郯城县| 本溪| 武冈市| 台州市| 广德县| 上饶市| 和田市| 石屏县| 荔波县| 乐至县| 宜兰县| 昌江| 柯坪县| 砀山县| 荆州市| 鞍山市| 中江县| 惠来县| 华容县| 岳西县| 双城市| 博湖县| 额尔古纳市| 辽阳县| 成都市| 肃南|