2

英語とアラビア語のテキストがあるアプリケーションに取り組んでいます。例として、アプリケーションを意味する言葉として言えます。単語は英語であり、ユーザーはアラビア語で意味を理解します。

例えば:

    Test     اختبار    // Test is the word and then there is it's meaning in Arabic

しかし、このローカル ファイルを読むと、意図したとおりにアラビア語になりません。代わりに、いくつかの奇妙な文字が表示されます。ファイルがUTF-8でエンコードされていることを確認しており、ファイルを読み取るときに、エンコードスキームをUTF-8に再度渡します..しかし、うまくいきません。コード スニペットは次のとおりです。

    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();
    }

どんな助けでも大歓迎です..ありがとう..!!!

4

1 に答える 1

0

私は実際にヘブライ語と完全に互換性のあるヘルパークラスを作成した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;
    }
}

クラスの各インスタンスは、別のファイル (FILENAME) を処理します。

お役に立てれば!

于 2012-08-17T19:50:22.880 に答える