簡體   English   中英

無法使用Flask Python讀取瀏覽器URL中的西里爾符號

[英]Can't read cyrillic symbols in browser URL using Flask python

大家下午好!

基本上,使用Flask框架在Python中運行編程代碼時,我在讀取西里爾字母時遇到問題。

Chrome瀏覽器網址會發生什么

mamapapa ”必須用西里爾字母表示-“ мамапапа

這是我的代碼:

# -*- 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)

如您所見,在行return jsonify({'Сегментация хэштегов': unidecode(np)})的行中,我已經使用unidecode來將西里爾字母轉換為拉丁字母,但這並不是我真正想要的。 我的主要目的是在獲得輸出時精確獲得西里爾字母符號(例如приветСША )。

據我所讀,瀏覽器URL不能使用西里爾字母嗎? 是事實,還是有什么可能的方法可以達到我的目標並獲得西里爾文的輸出?

也許有些東西使用'UTF-8'編碼/解碼?

提前致謝!

你是對的。 URL字符是有限的:普通拉丁字母(az,小寫和大寫字母)和標記- _. ~ 其他字符以%后面跟兩個十六進制數字進行轉義。 [來源: RFC3986附錄A ]。 某些人可能會創造性地使用其他字符,這些字符實際上會分隔路徑和參數(例如+ ,括號等)。

過去,URL被設計為供機器使用( http://www.不是最易讀的前綴),因此,這種轉義是:您可以放入所有字節,但是此類字節使用%編碼。

域可以使用其他字符(ASCII以外的字符),但是在這種情況下,它也只是一種編碼標准(ASCII):DNS和協議仍然僅使用ASCII字符。

瀏覽器可以自動進行轉義,並且您可以顯示未轉義的URL,但是實際的URL被轉義。 如果這種自動轉義可與他們的郵件客戶端/瀏覽器一起使用,則應嘗試使用(或您的客戶端)用例。

在任何情況下,使用HTML時,您可以在要顯示在URL欄上的url上以與實際URL不同的方式顯示URL,而不是真實URL(在鏈接上,並且可以用JavaScript進行一些控制)。

嘗試取消報價。 例:

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM