Cómo manejar caracteres especiales en cadena json

Tengo una aplicación donde almaceno el texto introducido por el usuario en una cadena json. Luego guardo esa cadena json en un archivo. Y luego, más adelante, vuelva a mostrarlo leyendo el archivo, extrayendo la cadena json y finalmente logrando que la cadena se muestre en una vista de texto. Sin embargo, me doy cuenta de que los caracteres especiales (más bien los símbolos) como £, ÷, €, etc. no se muestran de nuevo. Por ejemplo, el símbolo € se muestra como â □ ¬.

Algunos ejemplos de código a continuación para referencia

Primero, el código para capturar el texto ingresado por el usuario y colocarlo en un archivo

//get user entered text
QuestionEditText = (EditText)this.findViewById(R.id.editTextQuestion);
//put that into json object
JSONObject jObjOneQuestionDetails=new JSONObject();
jObjOneQuestionDetails.put("Question", QuestionEditText.getText());
//write json object  into file
FileOutputStream output = openFileOutput("MyFileName",MODE_PRIVATE);
OutputStreamWriter writer = new OutputStreamWriter(output);
writer.writejObjOneQuestionDetails.put());
writer.flush();
writer.close();

Ahora debajo del código para recuperar la cadena del archivo y mostrarla al usuario

//define and initialize variables
QuestionEditText = (EditText)this.findViewById(R.id.editTextQuestion);
private JSONArray jArrayQuizQuestions=new JSONArray();
private JSONObject jObjQuizTitle=new JSONObject();

//load JSONObject with the File
int ch;
StringBuffer fileContent = new StringBuffer("");
FileInputStream fis;
String fileString;
fis = this.getBaseContext().openFileInput("MyFileName");
while( (ch = fis.read()) != -1)
          fileContent.append((char)ch);
fileString = new String(fileContent);
jObjQuizTitle = new JSONObject(fileString);
jArrayQuizQuestions = jObjQuizTitle.getJSONArray("MyFileName");


//display json object into textview
JSONObject aQues = jArrayQuizQuestions.getJSONObject(pageNumber-1);
String quesValue = aQues.getString("Question");
QuestionEditText.setText(quesValue.toCharArray(), 0, quesValue.length());       

El código de arriba es solo una muestra, aquí he ignorado cualquier bloque try / catch. Esto debería dar una idea de cómo estoy capturando y mostrando el texto ingresado por el usuario.

Respuestas a la pregunta(1)

Su respuesta a la pregunta