我正在使用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(); }
}
}
答案 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);