Java 如果在内部存储器中保存和检索欧元货币符号,则会发生更改

Java 如果在内部存储器中保存和检索欧元货币符号,则会发生更改,java,android,internal-storage,Java,Android,Internal Storage,我必须将从EditTex获取的文本文件保存到内部存储器。一切正常,但如果我在EditText中写入欧元的货币符号,并将其保存到内部存储器中,当我恢复文件以将其放入文本视图时,欧元符号将转换为:美元符号$不会发生这种情况。下面是用于在内部存储器中保存和检索文本文件的两种方法。请问,您对如何维护€的正确符号有何建议 private void store (String filename, String data) { try { FileOutputStream fO

我必须将从EditTex获取的文本文件保存到内部存储器。一切正常,但如果我在EditText中写入欧元的货币符号,并将其保存到内部存储器中,当我恢复文件以将其放入文本视图时,欧元符号将转换为:美元符号$不会发生这种情况。下面是用于在内部存储器中保存和检索文本文件的两种方法。请问,您对如何维护€的正确符号有何建议

private void store (String filename, String data)
{
    try
    {
        FileOutputStream fOut= openFileOutput(filename,MODE_PRIVATE);
        fOut.write(data.getBytes());
        fOut.close();

    } catch (FileNotFoundException e1) {
        e1.printStackTrace();
    } catch (IOException e1) {
        e1.printStackTrace();
    }


private String read(String namefile, String datxt)
{
    try{
        FileInputStream fin=openFileInput(namefile);
        int c;
        String temp="";
        while ((c=fin.read())!=-1)
        {
            temp=temp+Character.toString(((char)c));
        }
        datxt=temp;
    } catch (FileNotFoundException e1) {
        e1.printStackTrace();
    } catch (IOException e1) {
        e1.printStackTrace();
    }
    return datxt;
}

我也有同样的问题,这就是我所做的。如果此解决方案解决了您的问题,请将此答案标记为已接受

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public String UTF8 = "utf8";
public int BUFFER_SIZE = 8192;

private void store (String filename, String data)
{
    try {
        BufferedWriter fOut = new BufferedWriter(new OutputStreamWriter(openFileOutput(filename, MODE_PRIVATE), UTF8), BUFFER_SIZE);
        fOut.write(data);
        fOut.close();
    } catch (FileNotFoundException e1) {
        e1.printStackTrace();
    } catch (IOException e1) {
        e1.printStackTrace();
    }
}

private String read(String namefile, String datxt)
{
    try {
        BufferedReader fin = new BufferedReader(new InputStreamReader(openFileInput(namefile), UTF8), BUFFER_SIZE);
        int c;
        String temp = "";
        while ((c = fin.read()) != -1) {
            temp = temp + Character.toString((char) c);
        }
        datxt = temp;
        fin.close();
    } catch (FileNotFoundException e1) {
        e1.printStackTrace();
    } catch (IOException e1) {
        e1.printStackTrace();
    }
    return datxt;
}

美元符号是纯ASCII码。所以,它是可打印的。最近添加了欧元符号,作为Unicode字符集的一部分。确保在保存和读取时使用UTF-8编码。另外,请确保您没有使用通常具有不同编码的Windows文件。很高兴为您服务。