Java: Comment puis-je obtenir l'encodage de inputStream?
Je veux obtenir de l'encodage à partir d'un flux.
1ère méthode - utiliser le InputStreamReader.
Mais il y a toujours le retour de l'OS de l'encodage.
InputStreamReader reader = new InputStreamReader(new FileInputStream("aa.rar"));
System.out.println(reader.getEncoding());
de sortie:GBK
2ème méthode - utiliser le UniversalDetector.
Mais il retourne toujours null.
FileInputStream input = new FileInputStream("aa.rar");
UniversalDetector detector = new UniversalDetector(null);
byte[] buf = new byte[4096];
int nread;
while ((nread = input.read(buf)) > 0 && !detector.isDone()) {
detector.handleData(buf, 0, nread);
}
//(3)
detector.dataEnd();
//(4)
String encoding = detector.getDetectedCharset();
if (encoding != null) {
System.out.println("Detected encoding = " + encoding);
} else {
System.out.println("No encoding detected.");
}
//(5)
detector.reset();
de sortie:null
Comment puis-je obtenir le droit? 🙁
source d'informationauteur youzhi.zhang
Vous devez vous connecter pour publier un commentaire.
Reprenons la situation:
Donc on a besoin de connaître le codage avant la lecture. Vous avez tout fait correctement, en utilisant d'abord un jeu de caractères de la détection de la classe.
Lecture http://code.google.com/p/juniversalchardet/ il doit gérer l'UTF-8 et UTF-16.
Vous pouvez utiliser l'éditeur de JEdit pour vérifier l'encodage, et de voir si il y a un problème.