différents formats de caractères

Eléphanteau du PHP | 12 Messages

31 déc. 2014, 15:41

Bonjour,
je cherche à pouvoir enregistrer dans ma base de données des phrases que je copie-colle d'ailleurs (Internet/docs perso).
Il se trouve que parfois certains caractères ne sont pas reconnus et que toute la suite de la phrase est alors ignorée.
Par exemple le oe (quand les deux lettres sont collées) ou le guillemet en mode chevron - c'est un peu pénible de les transformer un à un en guillemet reconnu (")...
Je crois comprendre qu'il s'agit d'encodages et de jeu de caractères mais je ne suis pas très au point là-dessus,
j'ai bien essayé de mélanger un htmlentities avec un mb_encode_numericentity mais tout s'embrouille... j'obtiens des » dont je ne suis pas tout à fait satisfait à l'affichage non plus :).
Y a-t-il qqch de simple et efficace pour cela?
D'avance merci !
Basile

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

31 déc. 2014, 15:53

Bonjour,

Le problème des jeux de caractères est assez souvent un casse-tête surtout quand ça provient de sources inconnues et diverses.

Voici 2 pistes qui devraient pouvoir t'aider :
https://github.com/neitanod/forceutf8
https://github.com/nicolas-grekas/Patchwork-UTF8
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 12 Messages

31 déc. 2014, 19:34

Merci @rthur,
les pages en question semblent bien complexes, :),
ce que j'en retiens, si j'ai bien compris, c'est donc qu'il n'y a pas de fonction facile pour réduire un texte écrit dans un jeu de caractères quelconque en un texte basique... Dure nouvelle pour la fin de l'année :).
J'espère que la prochaine sera meilleure alors!
Bon passage de l'une à l'autre.
Basile

PS : Et au cas où, existe-t-il une fonction simple pour qu'un caractère genre { affiche ce qu'il est censé représenter?

Mammouth du PHP | 2278 Messages

01 janv. 2015, 11:25

Bjr,
Une idée :
Déjà il faut décider du jeu de caractères utilisé par ta BDD : utf8_general_ci est le plus universel, mettre tes scripts php en accord avec (cf http://php.net/manual/fr/function.mb-in ... coding.php)
Pour chaque texte utiliser http://php.net/manual/fr/function.mb-de ... coding.php
et convertir avec http://php.net/manual/fr/function.mb-co ... coding.php
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Eléphanteau du PHP | 12 Messages

02 janv. 2015, 23:00

Salut, merci du coup de main, ça m'a fait avancer!
Maintenant, même certains guillemets et apostrophes qui faisaient bugger avant ne font plus bugger...
Seul hic, tous les caractères accentués disparaissent, eux qui, avant, ne posaient pas de pb.
Dans quelle catégorie faut-il encore aller puiser pour que ça marche ? :)

Merci d'avance à ceux qui pourront m'aider (et bonne année).
Basile

PS : mon code, maintenant:
mb_internal_encoding("UTF-8");
$source=$_POST[XXXX];
$encoding = mb_detect_encoding( $source, "auto" );
$essai = mb_convert_encoding( $source, "UTF-8", $encoding);
echo $essai;

Mammouth du PHP | 2278 Messages

03 janv. 2015, 11:24

Bjr,
Il me faudrait avoir une chaine d'origine pour pouvoir tester
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD