2017-05-09 2 views
2

Notre page PHP était juste une page Web UTF-8 composé de caractères chinois dans les méta descriptions.Whatsapp Partage des expériences de liens PHP Broken Chinese Characters pour méta descriptions

Je ne sais pas pourquoi quand quelqu'un a essayé de partager les liens dans Whatsapp, il a montré des lettres brisées.

Mais je l'ai partagé pour le trouver non-cassé (normal).

Quelles sont les raisons possibles? Nous avons ajouté deux:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 

et

header('Content-Type: text/html; charset=UTF-8'); 

Quelqu'un a une idée? Merci!

==========

enter image description here

+0

dupliquer de http://stackoverflow.com/questions/279170/utf-8-all-the-way-through –

+0

Je ne sais pas pourquoi mais [ceci dit] (https://richpreview.com/? url = http% 3A% 2F% 2Fentrepreneur-times.com% 2Fl% 2Ftch% 2Fblog% 2F% 3Fid% 3D12) votre balise meta description est introuvable. Peut-être est-il incorrectement généré à cause de problèmes UTF- *? – sgr12

+0

Changer votre jeu de caractères, le niveau de doc fera l'affaire, peut-être à regarder plus loin ... Attendez, attendez ... Attribut de langue! cela aiderait-il? – admcfajn

Répondre

1

Le logiciel utilisé (disons logiciel de blogging) ne gère pas bien le contenu codé UTF-8, ce qui entraîne une sortie non-UTF8 vers le navigateur.

Ce n'est pas que le logiciel de blogging serait défectueux dans toutes les opérations de contenu, plus le contraire est le cas, il est imparfait seulement dans certaines opérations de contenu. Mais il arrive sur chaque page que j'ai vu là-bas et est suffisant pour faire échouer a simple UTF-8 check:

$ curl -s 'http://entrepreneur-times.com/l/tch/blog/?id=12' \ 
    | php -r 'var_dump(preg_match("~~u", file_get_contents("php://stdin")));' 
bool(false) 

Le problème est la génération de textes de description (HTML balises meta pour la description et og: description). Cette partie du logiciel ne prend pas en compte le codage Unicode UTF-8 et coupe juste à une longueur binaire (très probablement, je n'ai pas vu le code). Cette façon de couper brise la sortie UTF-8.

Le correctif est là pour supprimer la faille du logiciel.

+0

@Vanson Wing Leung: Stackoverflow exemple est ici: https://stackoverflow.com/a/9087570/367456 - Et si vous avez besoin de plus de contrôle vérifier [PHPs * intl * bibliothèque] (http://php.net/manual/ en/book.intl.php). – hakre

+0

Correction, merci! Morale: Toujours utiliser mb_substr au lieu de substr pour essayer de réduire les chaînes –

+0

@VansonWingLeung: Voici une variante basée sur DOMText: https://3v4l.org/YOvKK#v500 - Juste pour montrer qu'il y a plusieurs façons d'y parvenir. L'extension XML est souvent disponible. – hakre

0

Je l'ai essayé d'ouvrir avec supports qui ne supporte que utf-8 et il a donné une erreur. Quand vous dites que c'est utf-8 ne veut pas dire que c'est utf-8. Le code source devrait également être écrit ou écrit en utf-8. Je voudrais vérifier si le code qui génère la page est aussi utf-8 ou sorties utf-8.