【发布时间】:2017-09-03 23:28:40
【问题描述】:
我有这个 URL https://českébudějovice.mysite.com/,它是一个捷克城市名称。当有人访问该 url 时,我提取子域并查询 City 模型对象。所以我在 Django 中有 City 模型,并且可以通过 shell 成功查询该城市:
>> City.objects.get(name='českébudějovice')
>> <City: České Budějovice, Czech Republic>
但是今天我在 Sentry 上收到了一个关于生产的异常,说“城市匹配查询不存在”,并且 URL 显示如下:
xn--eskbudjovice-deb41c5g.mysite.com
显然,我没有名称为“xn--eskbudjovice-deb41c5g”的城市,因此出现“城市匹配查询不存在”错误。
我一直在尝试将那个奇怪的子域转换为实际名称,但没有成功。我在下面尝试过:
>> s='xn--eskbudjovice-deb41c5g'
>> print s.encode('utf8')
>> xn--eskbudjovice-deb41c5g
我正在使用 Cloudflare,我想知道它是否以某种方式将 url 转换为那种形式,而不是将其作为 unicode 提供给我的服务器。
【问题讨论】:
-
域名中的编码不是utf8。见en.wikipedia.org/wiki/Internationalized_domain_name。
标签: python unicode cloudflare