Fichier encodé en UCS-2 Little Endian rapports 2x trop de lignes de Java

J'ai été le traitement de plusieurs fichiers txt avec un programme Java simple, et la première étape de mon processus est de compter les lignes de chaque fichier:

int count = 0;
br = new BufferedReader(new FileReader(myFile)); //myFile is the txt file in question
while (br.readLine() != null) {
    count++;
}

Pour l'un de mes fichiers, Java a été comptage exactement deux fois autant de lignes qu'il y avait vraiment! Cela a été source de confusion m'a beaucoup au premier abord. J'ai ouvert chaque fichier dans Notepad++ et pouvait voir que le mal de comptage le fichier se termine chaque ligne exactement de la même manière que les autres fichiers, avec un CR et LF. J'ai fait un peu plus de fouiller et remarqué que tous mes "ok" les fichiers ont été encodé en ANSI, et le seul problème de fichier est encodé en UCS-2 Little Endian (qui je n'en sais rien). J'ai eu ces fichiers ailleurs, donc je n'ai aucune idée de pourquoi l'un a été codé de cette façon, mais bien sûr, la mise à la norme ANSI résolu le problème.

Mais maintenant, la curiosité reste. Pourquoi le codage provoquant une double ligne du rapport de dépouillement?

Merci!

étudier plus en vérifiant que readLine() renvoie
Il serait vraiment utile si vous pouviez dire ce qui est dans le "bla bla" étant donné qu'il est possile d'où l'erreur est...
Bon commentaire. À partir de la documentation java: Lit une ligne de texte. Une ligne est considérée comme terminée par un saut de ligne ('\n'), un retour chariot ('\r'), ou un retour chariot suivi immédiatement par un saut de ligne. j'ai remarqué que si j'essaie de sortie de ce qui est lu à partir de l'UCS-2 fichier encodé, c'sorties brouillé la boîte de caractère au lieu de la CR.
UCS-2 est un codage similaire (et prédécesseur) de l'UTF-16
Bon point. J'ai mis à jour l'OP.

OriginalL'auteur The111 | 2012-04-09