1

Bonjour Spippu,

Je suis passé de la version 3.31 à la version 4.01 de html2pdf, mon application est entièrement en UTF8 comme la librairie PDF, cependant j'ai un problème bizarre.
J'ai un problème au niveau des caractères accentués MAIS uniquement avec le "à".

Quand j'écris ça "é-è-à-ç-ù" dans la base et que je l'affiche, j'ai ça "é-è--ç-ù".
Pour l'affichage je n'utilise pas de fonction utf8 encode car mes données (en bdd) sont déjà en utf8.

D'où ça peut venir ?
Cordialement,

ps : ma version de php 5.1.6

2

hum... laisse moi deviner... PHP 5.2 sous windows ?

cela vient d'un bug de PHP5 sous windows smile c'est un bug connu, il n'arrive pas à interprété le caractère "à" dans ses fonctions en UTF8.

essaye sous un serveur linux, tu verra, ca marche cheeky
Ancien pseudo : lolo

3

Ok merci de ta réponse, je suis sur PHP 5.1.6 sur Windows effectivement ^^

Par contre, dans mes pages, je peux l'afficher correctement ce "à".
Cela concerne t il uniquement la création des PDF ?

Je ne peux pas upgrader la version PHP (ma version doit etre compatible pour une base de données mysql 4.x + phpmyadmin.

J'ai remis la version 3.31 et ça marche correctement en attendant un retour de ta part.

4

ben il n'y a pas de correction possible, car cela vient du natif de php : les fonctions de conversion de charset vers UTF8 PHP déconnes sous windows.

tu peux faire directement des essaies dans une simple page php, avec des utf8_decode, utf8_encode, et htmlentities en UTF8, tu vera que les à disparaissent...
Ancien pseudo : lolo

5

y'a aucun workaround comme réécrire sa fonction?

6

surement que si, mais il n'y a pas que cette fonction d'impacté, il y en a beaucoups... et vu que PHP et Apache sous windows ont toujours été instables, et qu'il a toujours été déconseillé d'avoir un serveur de prod sous Windows...
Ancien pseudo : lolo

7

le problème du caractère accentué 'à' est toujours présent (version 4.03) avec certaine versions ancienne de PHP.
il faut ajouter le modifieur Unicode (u) à l'utilisation de preg_replace.
PATCH : modifier la fonction _prepareTxt du fichier parsingHTML.class.php :
if ($spaces) $txt = preg_replace('/\s+/is', ' ', $txt); devient if ($spaces) $txt = preg_replace('/\s+/uis', ' ', $txt);