Incapable de l'analyser comme un entier
Bien...j'ai ce .fichier txt (UTF-8)
4661,SOMETHING,3858884120607,24,24.09
4659,SOMETHING1,3858884120621,24,15.95
4660,SOMETHING2,3858884120614,24,19.58
Et ce code
FileInputStream fis = new FileInputStream(new File(someTextFile.txt));
InputStreamReader isr = new InputStreamReader(fis, "UTF-8");
BufferedReader in = new BufferedReader(isr);
int i = 0;
String line;
while((line = in.readLine()) != null) {
Pattern p = Pattern.compile(",");
String[] article = p.split(line);
//I don't know why but when a first line starts with
//an integer - article[0] (which in .txt file is 4661)
//becomes someWeirdCharacter4661 so I need to trim it
//*weird character is like |=>|
if (i == 0) {
StringBuffer articleCode = new StringBuffer(article[0]);
articleCode.deleteCharAt(0);
article[0] = articleCode.toString();
}
SomeArticle**.addOrChange(mContext, Integer.parseInt(article[0]), article[1], article[2], Integer.parseInt(article[3]), Double.parseDouble(article[4]));
i++;
}
Sur émulateur c'est bien mais sur un périphérique réel (HTC Desire), j'ai cette (étrange) erreur:
E/AndroidRuntime(16422): java.lang.NumberFormatException: unable to parse '4661' as integer
Quel est le problème?
* * , c'est juste des élèves de ma classe qui a besoin de ces paramètres en entrée (contexte,int,string,string,int,double)
OriginalL'auteur svenkapudija | 2011-01-04
Vous devez vous connecter pour publier un commentaire.
Il pourrait que votre fichier n'est pas en UTF8 ou quelque chose le long de ces lignes.
Cependant, si vous voulez pirater un correctif parce que vous n'êtes pas intéressé par le problème une solution 🙂 puis d'en extraire tout ce qui n'est pas un chiffre ou un point décimal.
L'expression régulière n'est pas parfait (il aurait une incidence sur ...999.... par exemple), mais il le fera pour vous.
EDIT:
Je n'ai pas lu la question correctement, il me semble. Si ce n'est qu'au début du fichier, alors il est très probable que ce que vous avez est une marque d'ordre d'octet, qui est utilisé pour vous dire si le fichier est au format unicode et aussi en UTF16/32 si c'est little endian ou big endian. Vous n'avez pas besoin de tendance à le voir très souvent utilisé.
http://unicode.org/faq/utf_bom.html#bom10
Aucune idée sans voir votre fichier. Il est probable que votre fichier d'origine soit a une drôle de codage ou est corrompu.
OriginalL'auteur monkjack
J'allais l'ajouter comme commentaire, mais a décidé d'inclure une image. Il semble que le problème n'est pas que le fichier n'est pas en UTF-8, mais en réalité, le contraire est vrai - et il semble que c'EST de l'UTF-8, mais il n'est pas lu correctement.
L'image est à partir d'un éditeur hexadécimal en regardant un fichier UTF-8, j'ai créé contenant de la première ligne. Notez les 3 caractères précédant 4661...
Si j'ai enregistrer le fichier au format ANSI, ces personnages ne sont pas là.
OriginalL'auteur Squonk
Vous pouvez utiliser Notepad++, ouvrez votre fichier texte, sélectionnez le menu Encodage-->"de l'Encodage en UTF-8 sans BOM" et de l'enregistrer avec cette option. La codées octets (EF BB BF) sera supprimée, de sorte que votre code peut analyser la chaîne en entier sans aucun problème.
Espérons que cette aide.
OriginalL'auteur ThanhHH
J'ai converti le fichier pour le lire en format ascii, et il a été lu correctement dans une application similaire.
OriginalL'auteur Waleed Mohamed