[英]Can't read cyrillic symbols in browser URL using Flask python
大家下午好!
基本上,使用Flask框架在Python中運行編程代碼時,我在讀取西里爾字母時遇到問題。
“ 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.