无法使用Flask python读取浏览器URL中的西里尔文符号

2024-10-04 03:16:33 发布

您现在位置:Python中文网/ 问答频道 /正文

大家下午好!在

基本上,在使用Flask框架在Python中运行编程代码时,我在阅读西里尔字母时遇到了一个问题。在

What happens in URL Chrome

mamapapa”必须是西里尔文–“mmаmenаПа

我的代码是:

# -*- coding: utf-8 -*-
from flask import Flask, jsonify
from unidecode import unidecode
from venv import logger

app = Flask(__name__)
names1=""


@app.route('/hashtags/<string:names>', methods=['GET'])


def get_hashtags(names):

    names1 = "#" + 'names'
    np= logger.start(names1)
    return jsonify({'Сегментация хэштегов': unidecode(np)})



if __name__ == '__main__':
    app.run(port=9876)

如您所见,我已经使用unidecode将西里尔字母翻译成第return jsonify({'Сегментация хэштегов': unidecode(np)})行中的拉丁字母,但这不是我真正想要做的。我的主要目的是在得到输出时精确地得到西里尔文符号(比如ПриерСША)。在

据我所知,在浏览器URL中不可能使用西里尔字母?这是真的吗?还是有任何可能的方法来达到我的目标,得到西里尔文的输出?在

也许有什么东西是用'UTF-8'编码/解码的?在

提前谢谢!在


Tags: 代码namefromimportappurlflasknames
2条回答

试着给予。 示例:

#Python3
from urllib.parse import unquote
string = unquote('УРЛ')

#Python2
import urllib
url='УРЛ'
urllib.unquote(url).decode('utf8')

你说得对。URL字符是有限的:纯拉丁字母(a-z,小写和大写)和符号-_.~。其他字符用%后跟两个十六进制数字转义。[来源:RFC3986 appendix-A]。有些人可以创造性地使用其他字符,这些字符实际上分割了路径和参数(例如+、括号等)。。在

历史上,URL被设计成供机器使用(http://www.不是最容易被人类阅读的前缀),所以这样的转义:可以放入所有字节,但这样的字节是用%编码的。在

域可以使用其他字符(ASCII以外的字符),但在这种情况下,它只是一种编码标准(到ASCII):DNS和协议仍然只使用ASCII字符。在

浏览器可以自动转义,您可以显示未转义的URL,但实际的URL是转义的。如果这种自动转义可以与邮件客户端/浏览器一起使用,那么您应该尝试使用您(或您的客户机)的用例。在

在任何情况下,使用HTML,您可以将URL显示为URL栏上要显示的URL上的实际URL(在链接上,您可以使用javascript进行一些控制)。在

相关问题 更多 >