Caractère arabe Problème d'Encodage: UTF-8 contre Windows-1256
Rapide de Fond: j'ai hérité d'un grand sql dump fichier contenant un mélange d'anglais et le texte arabe et (je pense), il a été à l'origine exportés à l'aide de 'latin1'. J'ai changé toutes les occurrences de 'latin1' à 'utf8', avant d'importer le fichier. Le texte arabe n'apparaît pas correctement dans phpmyadmin (qui je pense est normal), mais quand j'ai chargé le texte d'une page web avec le suivant...
<meta http-equiv='Content-Type' content='text/html; charset=windows-1256'/>
...tout avait l'air bien et le texte arabe affiche parfaitement.
Problème: Mon client est vraiment vraiment vraiment difficile et ne veut pas changer son...
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
...le 'Windows-1256' équivalent. Je ne pense pas que ce serait un problème, mais quand j'ai changé le jeu de caractères de la valeur à 'UTF-8', tous les caractères arabes est apparu que les diamants avec des points d'interrogation. Ne devrait pas l'UTF-8 affichage de texte en arabe correctement?
Voici quelques remarques à propos de ma configuration de base de données:
- Charset de la base de données est 'utf8'
- Connexion de base de données de classement est "utf8_general_ci'
- Toutes les bases de données, les tables et les champs ont été rassemblées comme "utf8_general_ci'
J'ai été à récurer le débordement de pile et d'autres forums pour tout ce qui le concerne, de ma question. J'ai trouvé des problèmes similaires, mais pas de solutions semblent fonctionner pour ma situation spécifique. J'espère que quelqu'un pourra vous aider!
- Avez-vous enregistrer en utilisant le bloc-notes? SI c'est le cas, assurez-vous que vous avez choisi l'encodage UTF-8 au lieu de la norme ANSI, sinon vous risquez de perdre vos caractères arabes.
Vous devez vous connecter pour publier un commentaire.
Si le document à droite quand il a déclaré que windows-1256 codé, alors il est probablement est windows-1256 codé. Il était donc apparemment pas exportés à l'aide de latin1—ce qui aurait été impossible, car latin1 n'a pas de lettres arabes.
Si c'est juste sur un seul fichier, puis le moyen le plus simple est de convertir de windows-1256 l'encodage en utf-8, par exemple à l'aide Notepad++. (Ouvrir le fichier, modifier l'encodage, via le menu format de Fichier, la langue arabe, windows-1256. Ensuite, sélectionnez l'option Convertir en UTF-8 dans le menu format de Fichier et faites Fichier → Enregistrer.)
Windows-1256 et UTF-8 sont complètement différents encodages, de sorte que les données est tout foiré si vous déclarez windows-1256 données en UTF-8 ou vice versa. Seuls les caractères ASCII, tels que les anglais, les lettres ont la même représentation dans les deux codages.
Nous ne pouvons pas trouver l'erreur dans votre code si vous ne nous montrez pas votre code, donc nous sommes très limités dans la façon dont nous pouvons vous aider.
Vous dit le navigateur d'interpréter le document comme étant en UTF-8 au lieu de Windows-1256, mais avez-vous vraiment modifier l'encodage utilisé à partir de Windows-1256 UTF-8?
Par exemple,
Je pense que vous avez besoin de revenir à la case départ. Il semble que vous avez un dump de la base dans windows-1256 encodage et vous souhaitez travailler en UTF-8 à partir de maintenant. On dirait également que vous êtes à l'aide de PHP, mais vous avez beaucoup de pertinence des étiquettes sur votre question et manque le plus important, PHP.
Tout d'abord, vous avez besoin de convertir le texte de vidage en UTF-8 et vous devriez être en mesure de le faire avec PHP. Les Chances sont que votre script de conversion aura deux étapes, tout d'abord lire le Win-1256 octets et de les décoder en interne des chaînes de texte Unicode, puis encode le texte Unicode chaînes de caractères en UTF-8 octets pour la sortie d'un nouveau fichier texte.
Une fois que vous avez fait, refaire l'importation de base de données que vous avez fait avant, mais maintenant, vous avez encodé les données d'entrée de l'UTF-8.
Après qu'il devrait être aussi simple que la lecture de la base de données et de rendu d'une page web avec le bon encodage UTF-8.
P. S. Il est effectivement possible de réencode les données chaque fois que vous l'afficher, mais qui ne résout pas le problème d'avoir une base de données complète de manière incorrecte des données codées.
afinde pour afficher des caractères arabes correctement , vous avez besoin de convertir votre fichier php en utf-8 sans Bom
ce qui s'est passé avec moi, les caractères arabes a été affichée diamants, mais la conversion en utf-8 sans bom permettra de résoudre ce problème