Question

Mon client possède une ancienne base de données MS SQL 2000 qui utilise des champs varchar (50) pour stocker les noms. Il a essayé d'utiliser cette base de données pour capturer certaines données (via un formulaire Web). Certains remplisseurs de formulaires proviennent d’autres pays et les champs de varchar sont devenus fous lorsque certains d’entre eux ont entré leur nom. Est-il possible de récupérer les données en quelque sorte? Peut-être en devinant sur quoi le personnage devrait être basé sur ce qu’il a résolu en ASCII / varchar et le pays d’origine de la personne? Certaines des données:

Nom / Pays / Prénom ou Nom?
JiÅ ™ Ã / CZE / F
Torbjörn / FIN / F
Huszár / HUN / L
Jürgen / DEU / F
Müller / CHE / L
Bumbálková / CZE / L
Doležal / CZE / L
Loïc / DEU / L

Au fait, le formulaire Web a spécifié ce type de contenu:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Était-ce utile?

La solution

Travailler à partir du 5ème exemple.

& # 195; est ascii # 195 (C3). & # 188; est ascii # 188 (BC).

Je suppose que M & # 195; Ller est censé être M & l.

S'il s'agit du format UTF-8, basé sur http://en.wikipedia.org/wiki/UTF-8#Description

Nous avons C3 BC = 1100 0011 1011 1100

Application du mappage UTF-8:

(110) 00011 (10) 11 1100

0000 0000 1111 1100

00FC, qui correspond à Unicode & # 252;

U + 00FC (voir http://en.wikipedia.org/wiki/Latin_characters_in_Unicode)

Il me semble que vous pouvez résoudre ce problème par programmation.

Maintenant, résolvons le premier exemple:

Ji & # 229; & # 8482; & # 227; était en réalité Ji & # 197; & # 8482; & # 195; & # 173; (Le dernier caractère n'est pas affiché).

Ignorer le Ji, ce qui est correct,

C5 99 c3 AD

(110) 0 0101 (10) 01 1001 (110) 0 0011 (10) 10 1101

0159 00ED

& # 345; & # 237;

Le nom est donc: Ji & # 345; & # 237 ;. Wikipedia dit que le r spécial est tchèque et que le i. De plus, si je google Ji & # 345; & # 237; ( http: // www .google.com / search? q = Ji% C5% 99% C3% AD & ie; = utf-8 & amp; oe = utf-8 ) Je reçois beaucoup de résultats. Nous sommes sur un gagnant ici.

Le deuxième exemple, Torbj & # 182; rn, correspond bien à Torbj & # 246; rn, ce qui semble convaincant.

IMHO il n'y a pas grand besoin de vérification humaine de ceux-ci, ils semblent juste fonctionner.

Autres conseils

La poste russe l'a fait. Quelqu'un a-t-il sauvegardé l'image avant qu'elle ne disparaisse?

http://forums.thedailywtf.com/forums/p/7156 /133456.aspx

Vous devez fondamentalement passer par libiconv pour le convertir en UTF8.

La liste complète des jeux de caractères appropriés dépendra de votre application, mais vous pouvez en déduire certaines suppositions en fonction du code de pays. Commencez par cette page sur WikiPedia .

Avertissement: vous aurez besoin d'un humain pour vérifier chaque conversion.

Suite aux commentaires de Richard: si la page Web contenant le formulaire spécifie un jeu de caractères (par exemple, iso-8859-1 == unicode) & amp; codage (par exemple, utf-8), un navigateur conforme aux normes doit soumettre les données de formulaire à l’aide de ce jeu de caractères et de ce codage. Si vos pages Web spécifient unicode, vous ne devriez pas avoir à gérer des pages de code Microsoft aléatoires dans les données, elles devraient toutes être unicode.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top