1

ユニコードのサポートが必要ないくつかのサイトをスクレイピングしようとしています。たとえば、この本のタイトルを取得しようとしていますが、ごちゃごちゃした文字が返されます。

(-> "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 サポートを有効にする方法がわかりません。

4

2 に答える 2

2

enlive の作成者である Christophe Grand は、Enlive の電子メール グループに返信するのに十分なほど親切でした。彼の提案は非常に有益でした。以下のメールをコピーしました。

こんにちは、

Enlive はフル機能の HTTP エージェントではありません (含まれていません)。java.net.URL を html-resource に渡すと、.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 に渡すエージェント ライブラリを使用します。

h番目、

クリストフ

于 2012-05-20T11:00:34.290 に答える
2

Enlive は Java 文字列を使用するため、Unicode をサポートしています。私のコンピューターで最初の例を実行したところ、次の結果が得られました。

(Evliyā Çelebi's Book of Travels)

おそらく、使用しているフォントには、表示しようとしているポイントコードのグリフがありませんか?

于 2012-05-17T19:13:03.537 に答える