[Java] Deviner l'encodage d'une string (et ouais on est en 2014)

Si vous avez des bons charset detectors a conseiller, eventuellement payant je prends.

Je veux des retours pas un google

merci :slight_smile:

Guava ou Apache Commons ne fournissent pas ce genre de services ?

Tu entends quoi par charset detector ? T’as pas un peu de contexte ? Detecter la locale ? Detecter le charset du stream que tu recois ?

Je suppose que la premiere reponse ne te convient pas assez pour que tu demandes autre chose que du google ? http://stackoverflow.com/questions/11497902/how-to-check-the-charset-of-string-in-java

Je recois un string en java par interface web et je dois essayer de deviner l’encodage.

Et le juniversalchardet est bof

“Java”.

C’est un faux problème. L’encodage fait parti du contrat de l’API. C’est un problème de client, pas de server si tu reçois pas le bon encodage (et de toute façon tout est UTF8 et pis basta). 

Je plussoie GloP pour avoir été dans le même cas. Si ton client est pas d’accord avec ce qu’il te dit, c’est pas ton problème.

[quote=« Bussiere, post:4, topic: 55548 »][/quote]
C’est toujours la même personne qui t’envoie le fichier ? Si oui, essaie de deviner les encodages habituels en fonction du passé?

Sinon, si c’est des navigateurs web, tu dois avoir un souci de configuration chez toi :confused:

Ca doit etre l’alcool mais j’ai enfin compris ton probleme :smiley:

Pour avoiur tenté mainte et mainte fois de detecter le charset, j’ai finit pas abandonner. S’ils te l’envoient aps en UTF8  : go fuck.  sinon c’est tellement la merde… on t’a parlé des encodage russes ? non ? hahaha…

bref : UTF8 ou tu refuses (ca doit etre meme précisé dans les headers…)

[quote=“Donjohn, post:9, topic: 55548”][/quote]
+1, c’est juste quasiment impossible de détecter un charset de façon sure.

Ensuite, HTTP fournit quand même pas mal d’indice pour aider à cette détection. 

Et pour répondre à ta demande, j’ai déjà utilisé avec succès la librairie guessencoding , mais c’était sur des fichiers textes, donc suffisamment gros pour l’heuristique (et surtout le choix était très simplifié puisque dans l’environnement c’était utf8 ou cp1252).

Ok merci pour ca que ca nous saoule …

Meme en 2014 on se prends encore la tete avec ca.

En gros on a une appli web ou des clients sur le monde entier (dont la chine) doivent remplir des questionnaires et uploader des fichiers.

Et un sous traitant d’un client peut acceder a ce formulaire et uploader des docs …

Donc enjoy

mais merci des reponses.

Si ta page en question est bien faite tu reçois qu’un seul encodage. Apres a l’intérieur des fichier, c’est ton bordel, mais pour le ouaib, c’est pas comme si ta problématique était unique: t’es pas le seul a faire des sites a l’international et en 2014 ca fait un moment qu’on a résolu le problème :slight_smile:

[quote=“GloP, post:12, topic: 55548”][/quote]

Le truc c’est que c’est le nom des fichiers et l’encodage des fichiers qui pose probleme.

Je veux bien un bout de piste du coup pour du upload de fichier dont le nom est dans un format bizarre et le contenu aussi stp.

Merci

ton bout de piste c’est l’UTF8, tout doit etre encodé en UTF8, tu dois recup des infos en UTF8. Et là tes problèmes se resolveront d’eux memes.

[quote=“Donjohn, post:14, topic: 55548”][/quote]
Avec la Chine il faut peut-être même pousser à UTF16. Reste qu’en HTTP au moment où le formulaire est posté, il devrait y avoir l’encodage du nom du fichier et du contenu du fichier.

rfc1867

Il me semble que la partie “6. Examples” pourrait t’aider.

Edit, il y aura aussi probablement de quoi t’éclairer ici :

rfc2388

[quote=“Histrion, post:15, topic: 55548”][/quote]Tu peux encoder tout ce que tu veux en UTF8 hein, meme du chinois, avec tout les symboles en fait. UTF8, ca peut etre encodé sur jusqu’a 6 bytes hein.

The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!) : http://www.joelonsoftware.com/articles/Unicode.html

[quote=“AnA-l, post:16, topic: 55548”][/quote]
Je disais ça parce que l’UTF8 c’est bien si tu bosses surtout avec des fichiers qui contiennent beaucoup d’ASCII. Si tu fais beaucoup de boulot avec des chinois, passer à UTF16 permet de réduire d’un gros facteur la taille des échanges.

Je repensais à ton soucis hier. On parle tjs de ton api ? Tu peux forcer l’encodage en repondant un bad Request (400 de memoire) si l’encodage de ta request n’est pas le bon. Ca forcera tous tes clients a passer en UTF8.

[quote=“Donjohn, post:18, topic: 55548”][/quote]

Malheureusement on est obligé de baisser notre froc face aux clients …

Bah alors, baisse ton froc. Mais dans ce cas, qu’ils ne se plaignent pas d’avoir des données pourries.