web-dev-qa-db-fra.com

Comment afficher les caractères emoji en HTML

J'ai sauvegardé le visage "savourant de délicieux emoji de nourriture" dans la base de données, et je l'ai lu dans php json_encode qui montre "uD83D\uDE0B"。 mais généralement nous utilisons un <img /> étiquette pour le remplacer. cependant, je trouve généralement ce format '\ uE056' et non "uD83D\uDE0B", à remplacer par l'image E056.png.

Je ne sais pas comment faire pour que l'image soit enregistrée sur 'uD83D\uDE0B'. Quelqu'un le sait?

Quelle est la relation entre 'uD83D\uDE0B' et '\ uE056' , ils représentent tous les deux des emoji "savourant une nourriture délicieuse"?

23
jason_luo

Le caractère Unicode U + 1F60B FACE SAVORING DELICIOUS FOOD est un caractère dit Plane 1, ce qui signifie que sa forme codée UTF-16 se compose de deux unités de code 16 bits, à savoir 0xD83D 0xDE0B. Généralement, les caractères du plan 1 posent des problèmes considérables car de nombreux programmes ne sont pas prêts à les traiter et peu de polices les contiennent.

Selon http://www.fileformat.info/info/unicode/char/1f60b/fontsupport.htm ce caractère particulier n'existe que dans les polices DejaVu et Symbola, mais les versions de DejaVu I'm en utilisant ne le contiennent pas.

Au lieu de traiter les problèmes de codages (qui ne sont pas si difficiles, mais nécessitent des informations supplémentaires), vous pouvez utiliser la référence de caractère &#x1f608; en HTML. Mais cela ne résout pas le problème des polices. Je ne connais pas les polices iPhone, mais en général, lors de la navigation sur le Web, les chances qu'un ordinateur possède une police capable de rendre le caractère sont probablement inférieures à 1%. Vous devrez donc peut-être utiliser des polices téléchargeables. L'utilisation d'une image est évidemment beaucoup plus simple et surtout plus fiable.

U + E056 est un point de code à usage privé, ce qui signifie que n'importe qui peut conclure un accord sur sa signification avec son frère ou avec lui-même, sans demander l'avis de quelqu'un d'autre. Un concepteur de polices peut lui attribuer n'importe quel glyphe.

9
Jukka K. Korpela

IMPORTANT: à partir de cette publication, le seul navigateur qui ne prend pas automatiquement en charge les emojis est Chrome.

POUR CHROME: Selon la langue côté serveur que vous utilisez, vous devriez être en mesure de trouver une bibliothèque qui convertit les emojis pour vous. J'ai récemment eu besoin de résoudre ce problème avec php et j'ai utilisé cette bibliothèque:

https://github.com/iamcal/php-emoji

Le créateur a essentiellement créé un Sprite et ajuste le CSS en fonction de l'unicode de l'emoji. Ce n'est pas joli, mais heureusement, il/elle a fait tout le travail de grognement pour vous. Si vous utilisez une langue différente, vous devriez pouvoir trouver quelque chose de similaire.

3
Gideon Rosenthal

comment puis-je mettre ces petites boîtes dans un fichier php?

De la même manière que tout autre personnage Unicode. Collez-les et assurez-vous d'enregistrer le fichier PHP et de servir la page PHP en UTF-8).

Quand je le mets dans un fichier php, il se transforme en points d'interrogation et quoi non

Vous avez alors un problème d'encodage. Travaillez avec des caractères Unicode que vous pouvez réellement voir correctement en premier, par exemple ąαд ™ 日本, avant de vous soucier des emoji.

Votre fichier PHP doit être enregistré au format UTF-8; la page qu'il produit doit être servie comme Content-Type: text/html;charset:UTF-8 (ou avec une balise META similaire); la base de données MySQL devrait utiliser un classement UTF-8 pour stocker les données et PHP devrait parler à MySQL en utilisant UTF-8.

Toutefois. Même en manipulant tout correctement comme ça, les PC ne montreront toujours pas les emoji. C'est parce que:

ils n'ont pas de polices qui incluent des formes pour ces caractères, et

les emoji ne sont toujours pas standardisés. Ces personnages que vous avez publiés se trouvent dans la zone d'utilisation privée Unicode, ce qui signifie qu'ils n'ont aucune signification officielle.

Chaque réseau au Japon utilise des codes de caractères différents pour leurs emoji, mappés à différentes zones du PUA. Donc, même sur un autre téléphone mobile, il n'affichera probablement pas le bon caractère, sauf si vous passez des siècles à convertir manuellement les codes emoji pour différents réseaux. Je suppose que ceux que vous avez publiés ci-dessus proviennent de SoftBank (iPhone?).

Il y a une proposition en cours menée par Google et Apple pour rassembler les emoji des différents réseaux et leur donner une place standardisée appropriée dans Unicode. Jusque-là, obtenir des emoji à afficher de manière cohérente sur les réseaux est un exercice dans Voir le aperçu des personnages du travail de normalisation pour voir combien de conversion vous auriez à faire.

Dieu, je déteste les emoji. Toute cette douleur pour une telle charge de déchets inutiles.

0
MCKapur