大家下午好!
基本上,我在使用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)
正如您所看到的,我已经使用 unidecode 将Cyrillic字母翻译成行return jsonify({'Сегментация хэштегов': unidecode(np)})
中的拉丁字母,但这不是我想要做的。我的主要目的是在获得输出时获得精确的西里尔符号(如привет或США)。
据我所知,浏览器网址中不可能使用西里尔字母?是真的还是有任何可能的方法来实现我的目标并获得西里尔的输出?
也许有'UTF-8'编码/解码的东西?
提前致谢!
答案 0 :(得分:0)
你是对的。 URL字符有限:普通拉丁字母(az,小写和大写)和标记:-
,_
,.
,~
。其他字符使用%
后跟两个十六进制数字进行转义。 [来源:RFC3986 appendix-A]。有些人可以创造性地使用其他角色,真正分割路径和参数(例如+
,括号等。
历史上URL被设计为由机器使用(http://www.
不是最可读的前缀),所以这样转义:你可以放置所有字节,但这些字节用%
编码。 / p>
域可以使用其他字符(ASCII外),但在这种情况下,它只是一种编码标准(对于ascii):DNS和协议仍然只使用ASCII字符。
浏览器可以自动执行转义,您可以显示未转义的URL,但转发真实的网址。如果这种自动转义适用于他们的邮件客户端/浏览器,您应该尝试使用您的(或您的客户端)用例。
在任何情况下,使用HTML,您可以在网址栏上显示的网址上以不同的方式显示网址(在链接上,并且您可以使用javascript控制javascript)。
答案 1 :(得分:0)
尝试取消引用。 例如:
include<iostream>
using namespace std;
int main()
{
char M[64],K[64];
long int i=0;
cout<<"Enter M: ";
cin>>M;
cout<<"M= ";
while(M[i])
{
switch(M[i])
{
case '0':
cout<<"0000";
break;
case '1':
cout<<"0001";
break;
case '2':
cout<<"0010";
break;
case '3':
cout<<"0011";
break;
case '4':
cout<<"0100";
break;
case '5':
cout<<"0101";
break;
case '6':
cout<<"0110";
break;
case '7':
cout<<"0111";
break;
case '8':
cout<<"1000";
break;
case '9':
cout<<"1001";
break;
case 'A':
cout<<"1010";
break;
case 'B':
cout<<"1011";
break;
case 'C':
cout<<"1100";
break;
case 'D':
cout<<"1101";
break;
case 'E':
cout<<"1110";
break;
case 'F':
cout<<"1111";
break;
case 'a':
cout<<"1010";
break;
case 'b':
cout<<"1011";
break;
case 'c':
cout<<"1100";
break;
case 'd':
cout<<"1101";
break;
case 'e':
cout<<"1110";
break;
case 'f':
cout<<"1111";
break;
default:
cout<<"nInvalid hexadecimal digit "<<M[i];
}
i++;
}
return 0;
cout<<"\nEnter K: ";
cin>>K;
cout<<"K: ";
while(K[i])
{
switch(K[i])
{
case '0':
cout<<"0000";
break;
case '1':
cout<<"0001";
break;
case '2':
cout<<"0010";
break;
case '3':
cout<<"0011";
break;
case '4':
cout<<"0100";
break;
case '5':
cout<<"0101";
break;
case '6':
cout<<"0110";
break;
case '7':
cout<<"0111";
break;
case '8':
cout<<"1000";
break;
case '9':
cout<<"1001";
break;
case 'A':
cout<<"1010";
break;
case 'B':
cout<<"1011";
break;
case 'C':
cout<<"1100";
break;
case 'D':
cout<<"1101";
break;
case 'E':
cout<<"1110";
break;
case 'F':
cout<<"1111";
break;
case 'a':
cout<<"1010";
break;
case 'b':
cout<<"1011";
break;
case 'c':
cout<<"1100";
break;
case 'd':
cout<<"1101";
break;
case 'e':
cout<<"1110";
break;
case 'f':
cout<<"1111";
break;
default:
cout<<"nInvalid hexadecimal digit "<<K[i];
}
i++;
}
return 0;
}