1

ユーザーが入力したテキストをjson文字列に保存するアプリがあります。次に、その json 文字列をファイルに保存します。その後、ファイルを読み取って表示し、そこからjson文字列を抽出し、最後に文字列を取得してテキストビューに表示します。ただし、£、÷、€ などの特殊文字 (むしろ記号) が表示されないことに気付きました。たとえば、記号 € は â□¬ と表示されます。

参考までに以下のサンプルコード

最初に、ユーザーが入力したテキストをキャプチャしてファイルに入れるためのコード

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

ファイルから文字列を取得してユーザーに表示するためのコードの下に

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

上記のコードは単なるサンプルです。ここでは、try/catch ブロックを無視しています。これにより、ユーザーが入力したテキストをどのようにキャプチャして表示するかについてのアイデアが得られるはずです。

4

1 に答える 1

5

この種の特殊文字を使用するには、 「UTF-8」を使用する必要があります。詳細については、http://developer.android.com/reference/java/nio/charset/Charset.htmlを参照してください。

次のように、予想される文字をエンコードする必要があります。

URLEncoder.encode("Your Special Character", "UTF8");

ここから、この問題に関する同様の質問を確認できます。

Android: JSON での特殊文字 (ä、ö、ü) の解析

于 2013-10-20T07:04:47.167 に答える