2010-09-10 16 views
1

Notre application reçoit des fichiers de nos utilisateurs, et ces fichiers doivent être validés s'ils sont du type de codage que nous supportons (UTF-8, Shift-JIS, EUC-JP), et une fois ce fichier validé, nous le ferions également besoin de sauvegarder ce fichier dans notre système et son encodage en tant que méta-données.Comment détecter le codage de caractères d'un fichier?

Actuellement, nous utilisons JCharDet (qui est un port java du détecteur de caractères de mozilla), mais il y a quelques caractères Shift-JIS qu'il semble ne pas détecter comme caractères Shift-JIS valides.

Des idées quoi d'autre pouvons-nous utiliser?

+1

duplication possible de [Java: comment déterminer le codage de charset correct d'un flux] (http://stackoverflow.com/questions/499010/java-how-to-determine-the-correct-charset-encoding-of -a-stream) –

+0

Comment l'application reçoit-elle des fichiers? Si c'est via HTTP, cela devrait être stocké dans les en-têtes mime. –

+0

@Peter: non, certainement pas. L'en-tête mime représente uniquement l'encodage du corps de la requête HTTP, pas l'encodage d'origine du fichier. – BalusC

Répondre

0

Apache Tika est une boîte à outils d'analyse de contenu qui est principalement utile pour déterminer les types de fichiers - contrairement aux schémas de codage - mais elle renvoie des informations de codage de contenu pour les types de fichiers texte. Je ne sais pas si ses algorithmes sont aussi avancés que JCharDet, mais cela pourrait valoir la peine d'essayer ...

0

ICU4J's CharsetDetector vous aidera. Par ailleurs, quel type de caractère avait causé l'erreur, et quel genre d'erreur avait causé? Je pense que ICU4J aurait le même problème, en fonction du caractère et de l'erreur.