【问题标题】:change utf8 language in python3.8.3在 python3.8.3 中更改 utf8 语言
【发布时间】:2021-05-08 04:13:48
【问题描述】:

我想显示我的语言,但它显示的是 utf-8 我的python版本是3.8.3

#!/usr/bin/env python
#-*- coding: utf-8 -*-
# Server Side
from flask import Flask
from flask_restful import Api,Resource,abort,reqparse,marshal_with,fields
import json
import requests

app=Flask(__name__)
api=Api(app)

##input  
def getbotnoi(self,name):
    return name

#design
class WeatherCity(Resource):
    def get(self,name):
        return getbotnoi(self,name)
   
#call
api.add_resource(WeatherCity,"/w/<string:name>")

if __name__ == "__main__":
    app.run(debug=True)

当它不是英文时它显示 utf8

eg.thai language

【问题讨论】:

  • 这一行 #-*- coding: utf-8 -*- 仅在 Python 2 中需要
  • 这是正确编码 JSON 中的语言。为了在浏览器中查看它,它应该由 JavaScript 处理。请记住,您正在定义一个(技术)API。
  • “它不起作用”是一个非常糟糕的描述。它既没有告诉我们发生了什么,也没有告诉我们您的预期。请收下tour 并阅读How to Ask

标签: python json api flask


【解决方案1】:

flask 应用程序正在按预期工作。您正在以不同的语言发送字符串,当您返回响应时,它会进行 UTF-8 编码。

由于您使用的是 flask_restful,默认情况下,响应将始终为 JSON 值,在本例中为 JSON string。在字符串中写入非 ASCII 字符的默认方式是使用 \u 前缀。而且,浏览器不知道如何渲染这个\u前缀字符串。

您可以只使用烧瓶原样返回响应而不是 JSON 编码:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Server Side

from flask import Flask
from flask.views import MethodView

app = Flask(__name__)


def getbotnoi(self, name):
    return name


class WeatherCity(MethodView):
    def get(self, name):
        return getbotnoi(self, name)


app.add_url_rule("/w/<string:name>", view_func=WeatherCity.as_view("weather"))

if __name__ == "__main__":
    app.run(debug=True)

默认情况下,这里的Content-Typetext/html; charset=utf-8,它将指示浏览器正确呈现它。

【讨论】:

  • 谢谢。但它可以调用创建的 API 吗?真正的getbotnoi函数是json输出。它还能用吗?
  • 如果响应需要在 JSON 中,那么 \u 字符串就可以了(你原来的方法)。最有可能的是,前端代码会在显示 JSON 之前将其转换为正确的格式。只是您无法直接在浏览器中查看响应。尝试在 Firefox 中打开它,它将以正确的方式呈现 JSON 字符串。
猜你喜欢
  • 1970-01-01
  • 2011-08-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-12
  • 1970-01-01
  • 1970-01-01
  • 2012-04-04
相关资源
最近更新 更多