如何从Android中的.txt文件中读取阿拉伯语文本

时间:2016-05-31 12:40:01

标签: java android arabic

我正在尝试阅读具有阿拉伯语文本的文件,然后我需要在文本视图中放置阅读文本..

以下是我尝试的代码:

public static String readRawFile(Context ctx, int resId) throws UnsupportedEncodingException {


    InputStream inputStream = ctx.getResources().openRawResource(resId);
    InputStreamReader isr = new InputStreamReader(inputStream, "UTF-8");
    BufferedReader reader = new BufferedReader(isr);
    String line;
    StringBuilder text = new StringBuilder();

    try {
        while ((line = reader.readLine()) != null) {
            text.append(line);
            Log.e("Line Read", line);
            text.append('\n');
        }
    } catch (IOException e) {
        return null;
    }
    return text.toString();
}

但是我读到的文件是

��(P3�EP��qDDGP��qD1QN-�EN@pFP��qD1QN-PJEP���

我应该如何阅读文件,以便阅读的文字是阿拉伯语

1 个答案:

答案 0 :(得分:0)

尝试只使用Bufferreader,我可以同时读取阿拉伯语和英语单词。而且你不需要UT-8编码。 我希望这会对你有所帮助:

public static void readArabic(String path) throws FileNotFoundException {


        try(BufferedReader red = new BufferedReader(new FileReader(path));) {
            String out;
            while ((out = red.readLine()) != null){
                System.out.println(out);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

这是主要方法:

public static void main(String[] args) throws FileNotFoundException {

        String path1 = "/Users/addodennis/Desktop/Projects/HotelReservation/src/Data/testAra";
        readArabic(path1);


    }

这是输出: 我刚刚从维基百科页面复制了一些阿拉伯语文本。

الأبجديةالعرةal-abjadīyahal-'arabīyah或الحروفالعربية 'ī(هجائي)或alifbā'ī(ألفبائي) 更多信息(ويكيبيديا) الولوجإلىصفحاتموقعالموسوعةالحرة(ويكيبيديا),وهوواحدمنأشهرالمواقعالعالميةعلىالشبكةالدولية。

如果您仍想使用StringBuilder,那么您也可以这样做:

    public static String readArabic(String path) throws FileNotFoundException {

    StringBuilder add = new StringBuilder();
    try(BufferedReader red = new BufferedReader(new FileReader(path));) {
        String out;
        while ((out = red.readLine()) != null){
            //System.out.println(out);
            add.append(out);
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
    return String.valueOf(add);
}