3

JSoup を使用して、別のサイトから情報を取得しています。情報は別の言語で表示されますが、کورなどのアラビア文字が使用されています。100% 確信はありませんが、それらは ASCII 文字ではないと思います。その文字列が ASCII でないかどうか (そうでないことが正しい場合) を確認し、その文字列を取得するにはどうすればよいですか。

編集: グアバライブラリとコードを使用した後、次の出力が得られます。

 ホーム 新しい 215

 単語を追加

 統計学

 私たちに関しては

 フィードバック

アラドリー

アングラヒ

ああ

シリア

スレートナハ

ガー

グラマー

問題は、 「کور」などの非 ASCII 文字列が出力されているにもかかわらず、 「Feedback」などの ASCII 文字列が出力されていることです。

これが私が使用しているコードです。

import java.io.IOException;
import java.io.PrintStream;
import java.io.UnsupportedEncodingException;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

import com.google.common.base.CharMatcher;

public class GrabLinks {

public static void main(String[] args) {

    Document doc;
    PrintStream out = null;
    try {
        out = new PrintStream(System.out, true, "UTF-8");
    } catch (UnsupportedEncodingException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }
    
    try {
        // need http protocol
        doc = Jsoup.connect("http://thepashto.com/word.php?pashto=&english=house").get();

        // get page title
        String title = doc.title();
        //System.out.println("title : " + title);

        // get all links
        Elements links = doc.select("a[href]");
        for (Element link : links) {

            // get the value from href attribute
            //System.out.println("\nlink : " + link.attr("href"));
            //System.out.println("text : " + link.text());

            if (!CharMatcher.ASCII.matchesAllOf(link.text())) {
                
                out.println(link.text());
            }
        }

    } catch (IOException e) { e.printStackTrace(); }
    
}
}
4

1 に答える 1

0

Google のライブラリ Guavaを使用すると、 aStringが ASCII かどうかを class で確認できますCharMatcher.ASCII

これは、使用方法の例です。

public static void main(String[] args) {
    System.out.println(isASCIIString("کور")); // false
    System.out.println(isASCIIString("Hi")); // true
}

public static boolean isASCIIString( String pString ) {
    return CharMatcher.ASCII.matchesAllOf(pString);
}

編集:

このコードでは、これが ASCII かどうかのみを確認できます。デフォルトの OutputStream はこれをサポートしていないため、端末の出力はそれに依存しません。System.outUTF-8 ではなく MacRoman 文字セットを使用して Unicode 文字列を出力します。キャラクターを印刷するには、これが役立ちます:

PrintStream out = new PrintStream(System.out, true, "UTF-8");
out.println(yourString);
于 2013-08-27T20:30:18.363 に答える