jsoup不支持另一种语言?

时间:2016-12-29 10:45:09

标签: android css jsoup

想要显示特定的网络div。我的代码正确并且适用于英语,但是例如不能使用阿拉伯语,即使没有固定在标准位置,尽管这种情况具有响应性编码。

这是我的代码:

public class card_activity extends AppCompatActivity {

public WebView webView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.card_activity);

        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        Bundle b = getIntent().getExtras();
        final String receivingdata = b.getString("Key");


        webView=(WebView)findViewById(R.id.web);
        webView.getSettings().setJavaScriptEnabled(true);


        new AsyncTask<Void, Void, String>() {
            @Override
            protected String doInBackground(Void... voids) {
                String html = "";
                try {
                    Document document = Jsoup.connect(receivingdata).timeout(20000).get();
                    Element elements=document.select("div.base-box:nth-child(2)").first();
                    html = elements.toString();
                } catch (IOException e) {
                    e.printStackTrace();
                }
                return html;
            }
            @Override
            protected void onPostExecute(String html) {

                String mime = "text/html";
                String encoding = "utf-8";
                webView.loadData(html, mime, encoding);

            }
        }.execute();
}
}

这是我对另一种语言的结果: enter image description here

如何显示那部分位于修复位置和正确的语言?

2 个答案:

答案 0 :(得分:0)

我认为这与HTTP响应Content-Type标头中缺少的charset属性有关。在解析HTML时,Jsoup将使用平台默认字符集,因此您需要将URL作为InputStream读取,并在Jsoup parse()方法中手动指定字符集。

Document document = Jsoup.parse(new URL(receivingdata).openStream(), "ISO-639-2", url);
Element elements=document.select("div.base-box:nth-child(2)").first();
for (Node node : elements.childNodes()) {
    if (node instanceof TextNode) {
        System.out.println(((TextNode) node).text().trim());
    }
}

答案 1 :(得分:0)

经过这么多尝试之后,我认识到不能用jsoup设置做到这一点。只需使用webView.loadDataWithBaseURL(null,html, mime, encoding,null);代替webView.loadData(html, mime, encoding);,即可轻松显示任何语言!