Il y a quelque chose d'étrange dans mon code. J'essaie d'ouvrir un fichier et d'y ajouter une chaîne générée (qui est basée sur l'heure), afin qu'elle puisse être utilisée plus tard. Dans mon application, cela se produit plus d'une fois, mais de toute façon, cette fois, cela ne me donne pas le résultat que j'aimerais voir. Pour clarifier:Android OutputStreamWriter écrit des caractères non-UTF-8
J'utilise le code suivant dans ma classe:
try {
OutputStreamWriter oos = new OutputStreamWriter(context.openFileOutput(ARRANGED_TXT, Context.MODE_PRIVATE));
oos.write(ArrangedTxtAsString);
oos.close();
}
catch(FileNotFoundException e){
Log.e("File Error", "File not found: " + e.toString());
}
et ARRANGED_TXT
étant défini comme:
private static final String ARRANGED_TXT = "arranged_txt.txt";
ArrangedTxtAsString
est une chaîne qui ressemble à ceci:
Banana
Pineapple
Orange
Coconut
Strawberry
Il a été créé à l'aide d'un StringBuilder.
Maintenant, le problème est, est que le fichier généré ressemble à ceci:
Ce n'est pas un problème avec notepad ++, comme d'autres programmes donnent le même résultat. Une chose importante à mentionner, c'est que bien que le texte ressemble à des caractères non-UTF-8, il est parfaitement traité par le reste du programme. Cela peut sembler un peu bizarre, mais ce que j'essaie de dire, c'est que le code fonctionne bien, mais le seul problème est que le texte affiché à travers un éditeur de texte ne correspond pas à ce qu'il devrait ressembler. Vous voyez, je suis plutôt perfectionniste et c'est pourquoi je veux que ça se règle. Cela pourrait aussi être un problème dans le futur (débogage, etc.).
Edit:
Il semble que peu importe ce que la chaîne contient: un seul caractère, un certain nombre, ou que ce soit; ça donne exactement le même résultat. Même en écrivant ""
résultats dans ces caractères étranges! J'espère vraiment que quelqu'un sait ce qui se passe ici! Merci d'avance.
vouliez-vous dire 'oos.write (ArrangedTxtAsString.toString());'? – Natecat
'ArrangedTxtAsString' devrait déjà être une chaîne, car elle est définie comme' ArrangedTxtAsString = stringBuilder.toString(); ', où' stringBuilder' est juste une instance d'un 'StringBuilder'. Sachant cela, ce n'est pas une grosse surprise que ça ne marche pas non plus. En tout cas, j'apprécie vraiment votre aide! ;) – PythonPupil1906
'OutputStreamWriter' n'est pas vraiment adapté à la sortie du texte, vous devriez utiliser un' BufferedWriter' à la place – Natecat