如果它是unicode,如何解码request.GET中的值?
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)
如果我过滤英语单词-我成功获得结果,但是如果我过滤俄语单词-结果为空。
例如,俄语单词Москва
从request.GET中以Unicode形式返回:
%u041C%u043E%u0441%u043A%u0432%u0430
将此代码编码为utf-8会返回相同的值。
如何将%u041C%u043E%u0441%u043A%u0432%u0430
转换为Москва
或如何使用此unicode值过滤数据库数据?
答案 0 :(得分:1)
对不起。问题不在Python中,而在我的JS代码中(escape()函数)。我将其替换为encodeURI()。
例如var url = "find_streets?city_name=" + encodeURI(cityName);
答案 1 :(得分:0)
如本文所建议:here
您可以使用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)
您能不能给我结果?