当前位置: 首页 > 知识库问答 >
问题:

在Android中从UTF-8编码的文本文件中读取阿拉伯语?

能向晨
2023-03-14
    Test     اختبار    // Test is the word and then there is it's meaning in Arabic
    InputStream inputStream = resources.openRawResource(R.raw.textfile);
    BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, "utf-8"));

    try {
        String line;
        while((line = reader.readLine()) != null) {
            String[] strings = TextUtils.split(line, " ");
            if (strings.length < 2) continue;
            addWord(strings[0].trim(), strings[1].trim());
        }
    } finally {
        reader.close();
    }

任何帮助都很感激..谢谢..!!!

共有1个答案

蒲寂离
2023-03-14

我实际上构建了一个处理fileio的助手类(并且与希伯来语完全兼容),所以我想阿拉伯语不会有问题:

 /***
 * 
 * @author Android Joker ©
 *  Do NOT copy without confirmation!
 *  Thanks!
 *
 */
public class FileMethods {
    private Boolean isOk;
    private Context mContext;
    private String fileName;
    public FileMethods(Context c, String FILENAME) {
        this.isOk = true;
        this.mContext = c;
        this.fileName = FILENAME;
    }
    public void reWrite(Object DATA) { 
        //For deleting the content of the file and then writing
        try {
            FileOutputStream fos = mContext.openFileOutput(this.fileName, Context.MODE_PRIVATE);
            fos.write(DATA.toString().getBytes());
            fos.close();
            Log.i("File Writing ("+this.fileName+")", "Success!");
            isOk = true;
        }
        catch (IOException e) {
            e.printStackTrace();
            Log.e("File Writing ("+this.fileName+")", "Failed!");
            isOk = false;
        }
    }
    public void Write(Object DATA) {
        //For keeping the previous contents and continue writing
        String data = Read("") + DATA.toString() + "\n";
        try {
            FileOutputStream fos = mContext.openFileOutput(this.fileName, Context.MODE_PRIVATE);
            fos.write(data.getBytes());
            fos.close();
            Log.i("File Writing ("+this.fileName+")", "Success!");
            isOk = true;
        }
        catch (IOException e) {
            e.printStackTrace();
            Log.e("File Writing ("+this.fileName+")", "Failed!");
            isOk = false;
        }

    }
    public void Clear() {
        //For deleting all the file contents
        try {
            FileOutputStream fos = mContext.openFileOutput(this.fileName, Context.MODE_PRIVATE);
            fos.write("".getBytes());
            fos.close();
            Log.i("Cleared"+"("+this.fileName+")", "Success!");
            isOk = true;
        }
        catch (IOException e) {
            e.printStackTrace();
            Log.e("Cleared"+"("+this.fileName+")", "Failed!");
            isOk = false;
        }
    }
    public String Read(String inCaseOfFailure) {
        //For reading (If reading failed for any reason, inCaseOfFailure will be written)
        String info = "";
        try {
            FileInputStream fis = mContext.openFileInput(this.fileName);
            byte[] dataArray = new byte[fis.available()];
            if (dataArray.length>0) {
                while(fis.read(dataArray)!=-1)
                {
                    info = new String(dataArray);
                }
                fis.close();
                Log.i("File Reading ("+this.fileName+")","Success!");
                isOk = true;
            }
            else {
                try {
                    FileOutputStream fos = mContext.openFileOutput(this.fileName, Context.MODE_PRIVATE);
                    fos.write(inCaseOfFailure.getBytes());
                    fos.close();
                    Log.e("File Writing In Case Of Failure ("+this.fileName+")", "Success!");
                    isOk = true;
                }
                catch (Exception e) {
                    e.printStackTrace();
                    isOk = false;
                    Log.e("File Writing In Case Of Failure ("+this.fileName+")", "Failed!");
                    Log.e("File Writing In Case Of Failure ("+this.fileName+")", "MOVING ON");
                }
            }
        }
        catch (FileNotFoundException e) {
            try {
                FileOutputStream fos = mContext.openFileOutput(this.fileName, Context.MODE_PRIVATE);
                if (inCaseOfFailure != null) {
                    fos.write(inCaseOfFailure.getBytes());
                    fos.close();
                    Log.e("File Writing In Case Of Failure ("+this.fileName+")", "Success!");
                    isOk = true;
                }
                else {
                    Log.e("File Writing In Case Of Failure ("+this.fileName+")", "Failed!");
                    isOk = false;
                }
            }
            catch (IOException e1) {
                e.printStackTrace();
                Log.e("File Writing In Case Of Failure ("+this.fileName+")", "Failed!");
                isOk = false;
            }
        }
        catch (IOException e) {
            e.printStackTrace();
            Log.e("File Reading ("+this.fileName+")", "Failed!");
            isOk = false;
        }
        return info;
    }

    public Boolean GetIsOK() {
        //Method that checks whether the FileIO was successfully running or not
        Boolean temp = isOk;
        isOk = true;
        return temp;
    }
}

类的每个实例处理另一个文件(文件名)。

希望这能有所帮助!

 类似资料:
  • 问题内容: 我需要阅读一个以GBK编码的文本文件。Go编程语言中的标准库假定所有文本均以UTF-8编码。 如何读取其他编码的文件? 问题答案: 以前(如在较早的答案中所述),“简单”的方法是使用需要cgo并包装iconv库的第三方程序包。由于许多原因,这是不希望的。值得庆幸的是,有一段时间以来,仅使用Go Authors提供的软件包(不是在主要软件包中,而是在Go子存储库中),就有了一种上乘的Go

  • 正常的ASCII是正确的,但韩语字符不是。 所以我做了一个简单的程序来读取一个UTF-8文本文件并打印内容。 输出表示,字符在字符串、文字和文件中的编码是不同的。

  • 这是我导出查询的VBA代码: docmd.transfertext acExportDelim,“miniFlow”,“qry01_cz_test”,“c:\test_cz.txt”,“no docmd.transfertext acExportDelim,”miniFlow“,”qry01_sk_test“,”c:\test_sk.txt“,”no 我还试图修改它,添加65001作为编码参数,结

  • 我有一个编码问题。 我有数百万个文本文件需要为语言数据科学项目进行解析。每个文本文件都编码为UTF-8,但我刚刚发现其中一些源文件的编码不正确。 例如我有一个中文文本文件,编码为UTF-8,但文件中的文本如下所示: 当我使用Python检测此中文文本文件的编码时: Chardet告诉我文件编码为UTF-8: UnicodeDammit还告诉我该文件编码为UTF-8: 同时,我知道这不是UTF-8,

  • 我正在开发一个应用程序,用于将阿拉伯语文本从PDF中提取到字符串变量中,每个单词以相反的顺序出现(而不是专用于解决),有时以正确的顺序出现,但分开的字符(专用于解决)类似于英语字符,但在阿拉伯语中,字符是连接在一起的。任何解决方案:我正在使用visual studio 2017 C#MVC应用程序,在windows 10本地,使用iTextSharp从PDF中读取文本。 注意:问题不仅仅是颠倒顺序

  • 我正在使用扫描仪读取一个阿拉伯语文件,并将文本文件存储在ArrayList中 我有一本字典,里面有一些单词,肯定的和否定的,有thier比率的单词。