如何判断字符串是否使用其他语言。 (不是ASCII)

时间:2013-08-27 20:27:47

标签: java

我正在使用JSoup从其他网站获取一些信息。信息使用其他语言,但使用的是阿拉伯字符,例如کور。而且我不是100%肯定,但我认为那些不是ASCII字符。如何判断该字符串是否不是ASCII(如果我是正确的,则不是),然后获取该字符串。

编辑:使用guava库和一段代码后,我得到以下输出。

  

主页   新215

     

添加单词

     

统计

     

关于我们

     

反馈

     

اردلی

     

انرکه

     

خونه

     

سرای

     

سرپناه

     

کور

     

ګمرک

问题在于虽然正在打印非ASCII字符串,例如“کور”,但正在打印“反馈”等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(); }

}
}

1 个答案:

答案 0 :(得分:0)

如果您使用Google's Library Guava,则可以使用班级String检查CharMatcher.ASCII是否为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.out使用MacRoman字符集而不是UTF-8打印Unicode字符串。要打印你的角色,这可能会有所帮助:

PrintStream out = new PrintStream(System.out, true, "UTF-8");
out.println(yourString);