我遇到一个奇怪的情况:
我正在卷曲这样的网址:
def check_urlstatus(url):
h = httplib2.Http()
try:
resp = h.request("http://" + url, 'HEAD')
if int(resp[0]['status']) < 400:
return 'ok'
else:
return 'bad'
except httplib2.ServerNotFoundError:
return 'bad'
如果我尝试使用以下方法进行测试:
if check_urlstatus('.f.de') == "bad": #<--- error happening here
#..
#..
这是说:
UnicodeError: label empty or too long
我在这里引起什么问题?
编辑 :这是idna的追溯。我猜想,它会尝试按分割输入.
,在这种情况下,第一个标签为空,这是第一个标签之前的速度.
。
问题是您的URL无法按照IDNA
rules正确编码,该规则控制如何转换国际化域名:
域名的ASCII和非ASCII形式之间的转换是通过称为ToASCII和ToUnicode的算法完成的。这些算法不适用于整个域名,而是应用于单个标签。例如,
**如果域名为www.example.com,则标签为www,example和com。 ToASCII或ToUnicode 分别应用于这三个 。**这两种算法的细节很复杂,并且在RFC 3490中进行了指定。以下概述了它们的功能。
ToASCII保留任何ASCII标签不变, 但如果该标签不适用于域名系统 , 则会失败。
如果给定的标签至少包含一个非ASCII字符,则ToASCII将应用Nameprep算法,该算法会将标签转换为小写并执行其他归一化处理,然后在使用四个字符之前,先使用Punycode
[16]将结果转换为ASCII。字符串“ xn-”。[17]
这四个字符的字符串称为ASCII兼容编码(ACE)前缀,用于区分Punycode编码的标签和普通的ASCII标签。ToASCII算法可能会以多种方式失败。例如,最终字符串可能超过DNS名称的63个字符的限制。ToASCII失败的标签不能在国际化域名中使用。
在您的情况下,“(空白)”不是有效的域名字符,您最终得到以下结果:
>>> '.f.de'.encode('idna')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.6/encodings/idna.py", line 164, in encode
result.append(ToASCII(label))
File "/usr/lib/python2.6/encodings/idna.py", line 73, in ToASCII
raise UnicodeError("label empty or too long")
UnicodeError: label empty or too long
如果将域名更改为“ afde”,则不应引发此异常。
几天前,我使用在中实现了,我遇到了一个问题,即以下错误: java.lang.IllegalStateException:没有已知的标签 null 选项卡 事情是这样的,因为我的< code>NavigationDrawer的第一个项目列表是我的< code>TabHostFragment,所以它工作得很好,但问题是当我在示例中进入第二个项目,然后我想回到第一个项目时,每次我尝试它都会崩溃。 我到
我读过关于隐性策略的书,但不确定。你知道怎么解决这个问题吗?
问题内容: 我将数据库转移到MS SQL Server 2008 R2,当我尝试保存长字符串时,它给了我最大长度错误,而我将它替换后将该列的数据类型设置为“文本”与“ varchar(max)”,但那里没有解决方案。 请为我提供一个解决此问题的解决方案。我正在执行以下查询: 我进行了很多搜索,但是找到的解决方案对我没有用。 谢谢! 问题答案: 根据ANSI SQL标准,对象标识符(例如,而不是字符
我一直在开发一个应用程序,它使用NFC标签做一些魔术。 一切都很好,直到最近,我改变了一些代码,这些代码与之前一直有效的NFC代码无关。 当我通过NFC点击启动我的应用程序时,所有的工作,当我点击应用程序运行时,我将在onNewIntent()中收到未来的NFCTag。 当我通过图标启动应用程序并在应用程序运行时尝试点击时,会调用onNewIntent()方法,但当我试图从intent中获取额外的
问题内容: 我陷入了这个问题。数据库架构是由其他人提供的,因此我不能简单地更改名称。我尝试在各处添加适当的注释,也许我遗漏了一些(显而易见的)? 这是我的完整映射(很多类),我将省略getter / setter。 问题是当hibernate试图获得全部 控制规则 ControlRuleAttrib ControleRuleAttribPK 这里的问题是,是否有可能以某种方式得到实体的?如您所见,
我正在使用AWS创建一个签名URL,以便我可以安全地将此URL传递给另一个API以供临时使用。签名URL指向S3资源。问题是其他API不接受如此长的链接。因此我正在尝试缩短它。我尝试使用goo.gl或bit.ly之类的缩短器,但无济于事,因为URL对他们来说太长了。我甚至使用AWS构建了自己的私人缩短器(AWS url缩短器),但它有同样的问题:“网站重定向位置的长度不能超过2,048个字符。”。