Nous devons importer des fichiers CSV vers MySQL contenant des trémas mal écrits. Par exemple, au lieu de Ü
(ASCII 154), quelqu'un avec un clavier non allemand a entré U
(ASCII 85) et a ajouté deux premiers points en utilisant ASCII 249, qui lui a semblé la même chose. MySQL écrit ceci comme U?
dans la base de données.détecter les mauvais trémas écrits
C'est pourquoi nous voulons que PHP détecte les combinaisons de caractères non ASCII, comme cette combinaison d'un caractère ASCII imprimable et d'un caractère ASCII étendu, qui n'existe pas dans le monde réel, du moins pas dans les langues principales.
Les fonctions preg_replace
que nous avons essayées, ne détectent pas cela et ne détectent pas non plus les trémas.
Une chance de réussir avec preg_replace
ou est-ce un autre moyen?
Vous pouvez faire correspondre ces combinaisons avec 'preg_match_all ('~ \ p {L} \ p {M} + ~ u', $ s, $ m)'. Mais je doute que vous puissiez facilement les remplacer par la lettre Unicode large char correspondant. Peut-être, vous avez besoin d'un mappage de lettre multibyte à large char. –
Lorsque vous lisez un fichier texte, y compris CSV, vous devez utiliser le codage de caractères utilisé par l'enregistreur. Alors, quel est le codage du fichier CSV? (ASCII n'a pas une unité de code ou un point de code numéroté 154 ou 249.) Est-ce [IBM850] (https://en.wikipedia.org/wiki/Western_Latin_character_sets_ (calcul) #Comparison_table)? Une fois le texte lu correctement, vous pouvez remplacer les représentations incorrectes de chaque caractère tréma ("U" par "Ü"). –