2017-06-23 3 views
0

Je m'excuse si cette question n'est pas directement liée à la programmation. J'ai un problème, dont j'ai deux exemples;Rendu incorrect de la langue (par exemple l'arabe)

  1. J'ai un site Web, où je stocke des mots arabes dans un DB, puis le récupérer et l'afficher sur une page, en utilisant php. (Here's le lien vers ma page, qui affiche l'arabe de manière incorrecte.)

  2. je visite un site Web au hasard, où la majorité du contenu est censé être en arabe. (. Un example d'un site web au hasard qui me donne cette question)

Dans ces deux cas, le texte arabe est affiché comme « ÇáÔíÎ: ÇáÓáÝ ãÚäÇå ÇáãÊÞÏãæä Yssa » ... ou ces personnages étranges. Notez que, dans le premier cas, je peux être en mesure de le corriger, puisque je contrôle le contenu. Donc, je peux définir l'encodage. Mais qu'en est-il du deuxième cas [c'est là que je veux m'excuser, puisqu'il n'est pas directement lié à la programmation (le code) de ma fin] - que dois-je faire pour les sites Web aléatoires que je visite, où le texte (Arabe) est affiché incorrectement? Toute aide serait vraiment appréciée.

+2

La page qui ne vous utilise le mauvais encodage, ils ont défini 'charset = ISO-8859-1' en utilisant les caractères utf8. Pour votre page, définissez l'encodage sur utf8 et réglez votre connexion db sur la même chose (en supposant que les données sont utf8 et déjà stockées correctement). Je suppose que pour les sites qui ne vous appartiennent pas, vous pouvez utiliser leur formulaire de contact. – chris85

+0

Merci. Y a-t-il quelque chose que je puisse faire, de mon côté, pour voir le contenu de la page qui ne m'appartient pas correctement? (Nvm - Juste vu le formulaire de contact) – Anas

+1

Non, les caractères sont déjà envoyés incorrectement. – chris85

Répondre

1

Pour le second cas:

Ce site est codé avec Windows-1256 (arabe), cependant, il déclare à tort à coder avec ISO 8859-1 (latin/Europe occidentale). Si vous regardez la source, vous pouvez voir qu'elle déclare <meta ... charset=ISO-8859-1" /> dans son en-tête. Donc, ce qui se passe, c'est que le serveur envoie à votre navigateur un fichier HTML qui est encodé avec Windows-1256, mais votre navigateur décode ce fichier avec ISO 8859-1 (parce que c'est ce que prétend le fichier).

Pour le ASCII characters, ce n'est pas un problème car ils sont codés de manière identique dans les deux codages. Cependant, pas pour les caractères arabes: chaque octet de code correspondant à un caractère arabe (tel que codé par Windows-1256) correspond à un caractère latin de l'encodage ISO 8859-1, et ces caractères latins brouillés sont ce que vous voyez à la place de le texte arabe.

Si vous souhaitez afficher tout le texte de ce site Web correctement, vous pouvez définir manuellement l'encodage de caractères utilisé par votre navigateur pour décoder ce site Web.

Vous pouvez faire cela, par exemple, avec Chrome en installant l'extension Set Character Encoding, puis faites un clic droit sur le site et sélectionnez:

Définir le codage de caractères> arabe (Windows 1256)

Dans Safari, vous pouvez le faire en sélectionnant simplement:

Affichage> Encodage du texte> Arabe (Windows).

La même chose devrait être possible avec d'autres navigateurs, comme Firefox ou Internet Explorer, aussi ...


Pour le premier cas:

Votre site web (le fichier HTML que votre serveur envoie au navigateur) est codé avec UTF-8. Cependant, ce fichier HTML ne contient aucune déclaration de codage, de sorte que le navigateur ne sait pas avec quel encodage ce fichier a été codé.

Dans ce cas, le navigateur est susceptible d'utiliser un codage par défaut pour décoder le fichier, qui est généralement ISO 8859-1/Windows-1252 (Latin/Western European). Le résultat est le même que dans le cas ci-dessus: tous les caractères arabes sont décodés en caractères latins brouillés.

Pour résoudre ce problème, vous devez déclarer que votre fichier HTML est codé avec UTF-8 en ajoutant la balise suivante dans l'en-tête de votre fichier:

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

Résout parfaitement les deux problèmes! – Anas