我正在尝试抓一些需要unicode支持的网站。例如,我正在尝试获取本书的标题,但它会返回混乱的字符:
(-> "http://www.brill.nl/publications/evliya-celebis-book-travels"
java.net.URL. enlive/html-resource
(enlive/select [:h1#page-title]) first :content)
并试图刮一个阿拉伯网站返回??????到处都是。
(enlive/html-resource (java.net.URL. "http://www.aljazeera.net/portal"))
我不确定我应该如何激活unicode支持。
答案 0 :(得分:2)
Enlive确实有unicode支持,因为它使用Java字符串。我在计算机上运行了你的第一个例子并得到了这个结果:
(Evliyā Çelebi's Book of Travels)
您使用的字体可能没有您要显示的点代码的字形?
答案 1 :(得分:2)
您好,
Enlive不是(也不包括)功能齐全的HTTP代理。 当你将java.net.URL传递给html资源时,它会调用.getContent,得到一个InputStream然后假定为UTF-8。 但是,如果您知道实际编码,则可以执行以下操作:
(-> "http://www.brill.nl/publications/evliya-celebis-book-travels" java.net.URL.
.getContent (java.io.InputStreamReader. "ENCODING GOES HERE")
enlive/html-resource
(en/select [:h1#page-title]) first :content)
或者使用代理库来检测正确的编码并将生成的Reader传递给html-resource。
HTH,
克里斯托弗