我在Assets文件夹中有HTML文件,该文件以UTF8(包含波斯字符)编码,我想读取此文件并将其加载到TextView中。我阅读了很多诸如load utf-8 text fileload HTML file into TextViewread 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编码!!!
因此,如果您遇到相同的问题,请首先检查文件的编码并确保其正确。

09-30 15:26
查看更多