按非科学字符查询

2024-04-25 10:12:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用的是Python,在googleappengine平台上。 假设我在代码中存储了以下数据:

class names(db.Model):
    name = db.StringProperty(multiline=True)

还有一些名字,比如:

^{pr2}$

带有非ascii字符。在

当我进行如下查询时:

^{3}$

这不起作用,比较是错误的。在

你知道我怎么解决这个问题吗? 我试着把“名字”编码成UTF-8,但也没用。在


Tags: 数据代码nametruedbmodelnamesascii
1条回答
网友
1楼 · 发布于 2024-04-25 10:12:58

在正确解码输入字符串(从web请求参数获得)和正确编码输出字符串(保存在GAE数据存储中)时,精确匹配应该没有问题。在

我在GAE SDK交互控制台中尝试过这个片段,它起作用了:

from google.appengine.ext import db

class names(db.Model):
    name = db.StringProperty(multiline=True)

some_name = 'Beyonc\xc3\xa9'.decode('utf-8')
    # same as: some_name = u'Beyoncé'
    # same as: some_name = u'Beyonc\u00e9'

n = names(name=some_name)
n.put()

q = names.all().filter('name =', some_name)
print q.get().name.encode('utf-8')
    # prints Beyoncé

您应该调试正在比较的字符串的原始值,即保存在存储器中的字符串和传递给查询的字符串。在

如果您不熟悉处理Unicode字符串,我建议您阅读本文article about Unicode by Joel SpolskyPython Unicode HOWTO。在

除此之外,如果您运行的搜索查询应该与Unicode字符匹配,比如当输入为'e'u'é',请考虑比较规范化字符串:

^{pr2}$

相关问题 更多 >

    热门问题