Comment lire et écrire en UTF-8 sur disque sur Android?
Je ne peut pas lire et écrire des caractères étendus (les caractères accentués français, par exemple) vers un fichier texte à l'aide de la norme InputStreamReader méthodes indiquées dans l'API Android exemples. Quand j'ai lu le fichier à l'aide de:
InputStreamReader tmp = new InputStreamReader(in);
BufferedReader reader = new BufferedReader(tmp);
String str;
while ((str = reader.readLine()) != null) {
...
la chaîne lue est tronquée à l'étendue des personnages plutôt qu'à la fin-de-ligne. La deuxième moitié de la chaîne de puis vient sur la ligne suivante. Je suppose que j'ai besoin d'enregistrer mes données en UTF-8, mais je ne trouve pas d'exemples, et je suis nouveau sur Java.
Quelqu'un peut-il me donner un exemple ou un lien vers la documentation pertinente?
C'est en fait un Java question.
Est-il général Java? Si vous utilisez openFileOutput à écrire à l'espace données privées sur Android, il n'y a pas de constructeur avec un charset option: developer.android.com/reference/android/content/...
Est-il général Java? Si vous utilisez openFileOutput à écrire à l'espace données privées sur Android, il n'y a pas de constructeur avec un charset option: developer.android.com/reference/android/content/...
OriginalL'auteur Rob Kent | 2010-04-29
Vous devez vous connecter pour publier un commentaire.
Très simple et direct. 🙂
Assurez-vous. Rien Android, ici au-dessus de
openFileOutput(..)
.Je veux dire en utilisant openFileOutput?
Oui. Vous pouvez remplacer générique
new FileOutputStream(filePath)
avec AndroidopenFileOutput(..)
.Grand - merci.
OriginalL'auteur yanchenko
Lorsque vous instanciez le
InputStreamReader
, utilisez le constructeur qui prend un jeu de caractères.Et faire quelque chose de similaire avec
OutputStreamWriter
J'aime avoir un
dans certains utilitaire de la classe dans mon code, alors que je peux appeler (voir plus dans le Doc)
et ne pas avoir à gérer
UnsupportedEncodingException
à chaque fois.OriginalL'auteur itsadok
cela devrait fonctionner sur Android, même sans préciser explicitement UTF-8, car le jeu de caractères par défaut est UTF-8. si vous pouvez reproduire ce problème, s'il vous plaît faire un bug avec une traçabilité des cas de test ici:
http://code.google.com/p/android/issues/entry
OriginalL'auteur Elliott Hughes
si vous faites face à ce type de problème, essayez de faire cela. Vous devez
Encode
etDecode
vos données dansBase64
. Cela a fonctionné pour moi. Je peux partager le code si vous en avez besoin.OriginalL'auteur Mukund K Roy
Vérifier l'encodage de votre fichier en cliquant droit dessus dans l'Explorateur de Projet et en sélectionnant propriétés. Si c'est pas le bon encodage, vous aurez besoin de re-saisir vos caractères spéciaux après vous changer, ou au moins c'était mon expérience.
OriginalL'auteur William T. Mallard