当前位置: 首页 > 知识库问答 >
问题:

DjangoRequest.GET和Unicode

勾炜
2023-03-14

如何从请求中解码值。得到它是否在统一码?

def find_streets(request, qs=None):
    city_name = request.GET.get('city_name')
    print(request.GET.get('city_name'))
    # %u041C%u043E%u0441%u043A%u0432%u0430
    # (Москва)
    qs = models.Streets.objects.values_list('street_name', flat=True).filter(city__city_name=city_name)

如果我过滤英语单词 - 我成功得到结果,但如果我过滤俄语单词 - 结果是空的。例如,俄语单词 Москва 从请求返回。在统一码中获取为:

%u 041 C%u 043 E%u 0441%u 043 A%u 0432%u 0430

将其编码为 utf-8 将返回相同的值。

如何将 %u041C%u043E%u0441%u043A%u0432%u0430 转换为 Москва 或如何使用此 unicode 值筛选 DB 数据

共有2个答案

霍永年
2023-03-14

正如这篇文章中建议的那样:这里

你可以像这样使用urllib,例如:

a = b'restaurant_type=caf\xc3\xa9'
urllib.parse.parse_qs(a.decode())
# > {'restaurant_type': ['café']}

在您的情况下,可能是:

def find_streets(request, qs=None):
    city_name_tmp = request.GET.get('city_name')
    city_name = urllib.parse.parse_qs(city_name.decode())
    qs = models.Streets.objects.values_list('street_name', flat=True).filter(city__city_name=city_name)

你能试着给我结果吗?

单于煌
2023-03-14

不好意思。问题不在于蟒蛇,而在于我的JS代码(转义()函数)。我用编码URI()替换了它。

例如,变量网址 =“find_streets?city_name=”编码(城市名称);

 类似资料:
  • 问题内容: 我在xml文件中有这个字符: 我尝试使用以下代码生成ElementTree的实例: 我收到以下错误: (注意:位置不准确,我从一个较大的XML样本中取样)。 怎么解决呢?谢谢 问题答案: 你 不会 需要解码XML的ElementTree的工作。XML带有自己的编码信息(默认为UTF-8),ElementTree为您完成工作,输出unicode: 如果您的数据包含在文件(如)对象中,只需

  • 问题内容: 这是我使用Selenium 2库的第二天,Unicode的痛苦似乎从未消退。 我只是在做最基本的操作,想打印页面源代码: 果然,我得到一个错误: 我如何将此编码为? 问题答案: 根据这个类似的问题,您可以选择。 您可以将源转换为在此过程中丢失Unicode字符的所有ascii。 或者,我认为您会更喜欢这种方式,可以将其编码为utf-8,如下所示: 。

  • 2. Unicode和UTF-8 为了统一全世界各国语言文字和专业领域符号(例如数学符号、乐谱符号)的编码,ISO制定了ISO 10646标准,也称为UCS(Universal Character Set)。UCS编码的长度是31位,可以表示231个字符。如果两个字符编码的高位相同,只有低16位不同,则它们属于一个平面(Plane),所以一个平面由216个字符组成。目前常用的大部分字符都位于第一个

  • 问题内容: 关于它们有很多传说。我想知道真相。以下两个示例之间有什么区别? 问题答案: 不确定从何处获得传说,但: 提交按钮 与: IE6将在标记之间提交此按钮的所有文本,其他浏览器将仅提交值。使用可使您在按钮的设计上享有更大的布局自由度。从各种意图和目的看,它乍一看似乎很棒,但是各种浏览器怪癖使它有时很难使用。 在您的示例中,IE6将发送到服务器,而其他大多数浏览器将不发送任何内容。要使其跨浏览

  • 什么区别以及如何正确重写代码?

  • 问题内容: 我必须将印地文文本存储在MySQL数据库中,使用PHP脚本获取它并将其显示在网页上。我做了以下事情: 我创建了一个数据库,并将其编码设置为UTF-8,并将排序规则设置为。我在表中添加了一个varchar字段,并将其设置为在charset属性中接受UTF-8文本。 然后我开始向其中添加数据。在这里,我不得不从现有站点复制数据。印地文文本看起来像这样:सूर्योदय:05:30 我直接将