我正在尝试关注这篇关于无头Oauth身份验证的博文:
http://blog.databigbang.com/automated-browserless-oauth-authentication-for-twitter/
基本上我;尝试使用jython来调用Htmlunit,打开授权网页并接受它。但是jython和httplib2
之间存在一些不兼容性File "/Users/andrey/jython2.7b1/Lib/site-packages/httplib2-0.8-py2.7.egg/httplib2/iri2uri.py", line 71, in iri2uri
authority = authority.encode('idna')
LookupError: unknown encoding 'idna'
如何解决此错误?如果我导入encodings.idna,那么stringprep,re,编解码器也必须导入,jython没有。
答案 0 :(得分:1)
Jython没有idna支持,相反,如果你想做同样的事情,你必须打电话给Java。
将Unicode编码为IDNA ASCII格式:
import java.net.IDN
authority = java.net.IDN.toAscii(authority)
将IDNA ASCII解码为Unicode:
authority = java.net.IDN.toUnicode(authority)
如果您正在修改httplib2(或任何其他库)并且不想破坏其他Python实现的功能,您可以执行以下操作:
import platform
if platform.python_implementation() == "Jython":
import java.net.IDN
# do IDNA things here
else:
# use .encode('idna') Pythonically