python2使用isalnum函数的坑
我们项目使用的框架是Django 1.6.11,最近在优化项目搜索功能,需要根据用户输入的不同类型的值去走不同的搜索逻辑,比如用户输入关键字只有数字或字母的情况,一般我们遇到这种情况,首先会想到使用isalnum方法判断字符串是否只包含数字或字母,但是我在用的时候就有问题了;
接收用户输入参数的代码:
entname = request.GET.get("key").strip() if request.GET.get("key") else ""
正常情况当用户输入关键为 "小米科技",entname.isalnum的返回值为False,但是出人意料的是返回值为True,
后来通过分析原来是因为字符串编码的问题
当通过上面代码接收的参数类型为unicode,所以会出现上述问题:

要避免该问题,需要对接收的字符串进行编码为字符串类型, 代码如下:
alpha_entname = entname.encode('utf-8'),这时就可以正常使用了

希望对遇到类似的朋友有所帮助,如有问题欢迎留言指点,谢谢!

浙公网安备 33010602011771号