我在Assets文件夹中有HTML文件,该文件以UTF8(包含波斯字符)编码,我想读取此文件并将其加载到TextView中。我阅读了很多诸如load utf-8 text file,load HTML file into TextView,read UTF8 text file from res/raw之类的帖子并编写以下代码:
try{
InputStream inputStream = getResources().getAssets().open("htmls/salamati.html");
// I also try "UTF-8" but none of them worked
BufferedReader r = new BufferedReader(new InputStreamReader(inputStream,"UTF8"));
StringBuilder total = new StringBuilder();
String html;
while ((html = r.readLine()) != null) {
total.append(html);
}
// total contains incorrect characters
textView.setText(Html.fromHtml(total.toString()));
}
catch (IOException exception)
{
textView.setText("Failed loading HTML.");
}
但是它显示不正确的字符!我也尝试将total.toString()转换为UTF8 String数组,然后将其添加到textView中,但它也无法正常工作
textView.setText(Html.fromHtml(new String(total.toString().getBytes("ISO-8859-1"), "UTF-8")));
textView或模拟器没有问题,因为从数据库加载HTML时,它可以正确显示utf8字符!所以我该怎么做?
最佳答案
经过大量搜索并测试了一些其他代码之后,最后我用另一个HTML文件替换了我的HTML文件。令人惊讶的是,我的代码可以正常工作!我调查了以前的HTML文件,发现它具有Unicode编码!!!
因此,如果您遇到相同的问题,请首先检查文件的编码并确保其正确。