J'ai essayé d'utiliser java.io.FileReader de lire des fichiers texte et de les convertir en chaîne de caractères, mais j'ai trouvé le résultat est mal codé et pas lisible du tout.
Voici mon environnement:
Windows 2003, codage du système d'exploitation: CP1252
Java 5.0
Mes fichiers sont codés en UTF-8 ou CP1252 codé, et certains d'entre eux (codé en UTF-8 fichiers) peuvent contenir des Chinois (non-latine) caractères.
J'utilise le code suivant pour faire mon travail:
private static String readFileAsString(String filePath)
throws java.io.IOException{
StringBuffer fileData = new StringBuffer(1000);
FileReader reader = new FileReader(filePath);
//System.out.println(reader.getEncoding());
BufferedReader reader = new BufferedReader(reader);
char[] buf = new char[1024];
int numRead=0;
while((numRead=reader.read(buf)) != -1){
String readData = String.valueOf(buf, 0, numRead);
fileData.append(readData);
buf = new char[1024];
}
reader.close();
return fileData.toString();
}
Le code ci-dessus ne fonctionne pas. J'ai trouvé le FileReader l'encodage est CP1252 même si le texte est codé en UTF-8. Mais la JavaDoc de java.io.FileReader dit que:
Les constructeurs de cette classe assumer que le codage de caractères par défaut et le défaut d'octets taille de la mémoire tampon sont approprié.
Est-ce à dire que je n'ai pas besoin de définir l'encodage de caractères par moi-même si je suis en utilisant FileReader? Mais j'ai eu tort de données codées actuellement, quelle est la bonne façon de traiter avec ma situtaion? Merci.