想要显示特定的网络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();
}
}
如何显示那部分位于修复位置和正确的语言?
答案 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)
webView.loadDataWithBaseURL(null,html, mime, encoding,null);
代替webView.loadData(html, mime, encoding);
,即可轻松显示任何语言!