89 votes

Sortie PHP affichant des petits losanges noirs avec un point d'interrogation

Je suis en train d'écrire un programme php qui tire des données d'une base de données. Je ne sais pas si je peux me permettre de le faire, mais je ne sais pas non plus si je peux me permettre de le faire, CARACTÈRE DE REMPLACEMENT (je suppose qu'il s'agit d'un texte Microsoft Word).

Comment puis-je utiliser php pour supprimer ces caractères ?

3voto

Prasant Kumar Points 342

Ceci vous aidera. Mettez ceci à l'intérieur <head> étiquette

<meta charset="iso-8859-1">

1voto

che Points 6899

Cela peut être dû à une erreur d'unicode ou d'un autre jeu de caractères. Essayez de changer le jeu de caractères dans votre navigateur, dans la plupart des cas le texte sera correct. Ensuite, il s'agit de savoir comment convertir le contenu de votre base de données au jeu de caractères que vous utilisez pour l'affichage. (Ce qui peut en fait être simplement l'ajout d'une instruction utf-8 charset à votre sortie).

1voto

drtechno Points 143

Ce que j'ai fini par faire après avoir corrigé mes tables, c'est de les sauvegarder et de rétablir les paramètres en utf-8, puis j'ai modifié mon fichier dump pour que DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci soient mes entrées de jeu de caractères.

maintenant je n'ai plus de problème de jeu de caractères car la base de données et le navigateur sont en utf8.

J'ai trouvé la cause du problème. Il s'agissait des effets de la page web et du navigateur sur la base de données. Sur les terminaux linux (ubuntu+firefox), la base de données était encodée en latin1, ce qui correspond à la configuration des onglets. Mais sur les terminaux Windows 10+edge, les entrées étaient codées de force en utf8. J'ai également remarqué que Windows 10 avait des problèmes pour rester en latin1, j'ai donc décidé de me plier au vent et de tout convertir en utf8.

J'ai pensé qu'il s'agissait d'un problème lié à Windows 10 car nous avons commencé à utiliser des terminaux Win 10. donc encore une fois les bugs de microsoft causent des problèmes. Je ne sais toujours pas pourquoi l'encodage change sur les formulaires car le navigateur sous Windows 10 affiche le jeu de caractères latin1 mais quand il entre il est encodé utf8 et j'obtiens l'anomalie de données. mais sous linux+firefox il ne fait pas cela.

1voto

jacobross85 Points 71

C'est ce qui s'est passé dans mon cas :

$text = utf8_decode($text)

Je transforme le caractère diamant noir en point d'interrogation pour que vous puissiez :

$text = str_replace('?', '', utf8_decode($text));

1voto

asma Points 11

Il suffit d'ajouter ces lignes avant les en-têtes.

Format exact des .doc/docx seront récupérés :

 if(ini_get('zlib.output_compression'))

   ini_set('zlib.output_compression', 'Off');
 ob_clean();

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X