Quel codage de caractères dois-je utiliser pour une page Web contenant principalement du texte en arabe? Est-utf-8 d'accord?
Ce que l'encodage des caractères dois-je utiliser pour une page web contenant principalement du texte arabe?
Est utf-8 d'accord?
source d'informationauteur Paul D. Waite
Vous devez vous connecter pour publier un commentaire.
UTF-8 peut stocker la gamme Unicode, donc c'est bien d'utiliser pour l'arabe.
Cependant, si vous vous demandiez ce que l'encodage serait plus efficace:
Tous les caractères arabes peuvent être codés à l'aide d'un simple code UTF-16 unité (2 octets), mais ils peuvent prendre 2 ou 3 UTF-8 unités de code (1 octet chacun), donc si tu fais de l'encodage arabe, UTF-16, serait plus efficace de l'espace option.
Cependant, vous n'êtes pas seulement l'encodage arabe - vous êtes le codage d'un nombre important de caractères qui peut être stocké dans un octet en UTF-8, mais prendre deux octets en UTF-16; tout le html de codage de caractères
<
,&
,>
,=
et tous les élément html noms.C'est un compromis et, à moins que vous soyez aux prises avec d'énormes documents, il n'a pas d'importance.
Je développe principalement l'arabe sites web et ce sont les deux codages j'utilise :
1. Windows-1256
C'est l'encodage le plus courant arabe sites web utilisent. Il fonctionne dans la plupart des cas (90%) pour les utilisateurs arabes.
Ici est l'un des plus grands arabe web-les forums de développement: http://traidnt.net/vb/. Vous pouvez voir qu'ils sont à l'aide de cet encodage.
Le problème avec ce codage est que si vous développez un site web pour une utilisation internationale, ce jeu ne fonctionne pas avec tous les utilisateurs et ils verront que du charabia plutôt que le contenu.
2. UTF-8
Ce codage permet de résoudre le problème précédent, et travaille également dans les url. Je veux dire, si vous voulez avoir des mots arabes dans la votre url, vous en avez besoin pour être en utf-8 ou il ne fonctionnera pas.
L'inconvénient de ce codage est que si vous allez économiser de l'arabe du contenu d'une base de données (par exemple MySql) à l'aide de cet encodage (si la base de données sera encodé en utf-8), sa taille va être le double de ce qu'elle aurait été si elle avait été codé avec windows-1256 (pour la base de données seront encodées avec le latin-1).
Je suggère d'aller avec l'encodage utf-8 si vous pouvez vous permettre l'augmentation de la taille.
UTF-8 est très bien, oui. Il peut encoder n'importe quel point de code dans le standard Unicode.
Édité pour ajouter
Pour rendre la réponse plus complète, votre choix réalistes sont:
Chacun vient avec les inconvénients et les avantages.
UTF-8
Comme Joe Gauterin points, UTF-8 est très efficace pour les textes Européens mais vous pouvez obtenir de plus en plus inefficaces les "plus" de l'alphabet Latin que vous obtenez. Si votre texte est tout arabe, il sera effectivement plus que l'équivalent de texte en UTF-16. C'est rarement un problème, cependant, dans la pratique, en ces jours de bon marché et abondant de RAM, sauf si vous avez beaucoup de texte à traiter. Plus de problème, c'est que la longueur de la variable de l'encodage rend certaines opérations de la chaîne difficile et lente. Par exemple, vous ne pouvez pas obtenir facilement le cinquième arabe de caractères dans une chaîne, car certains personnages pourraient être de 1 octet de long (signes de ponctuation, par exemple), tandis que d'autres sont à deux ou à trois. Cela fait de réels traitement de chaînes lente et sujette à erreur.
D'autre part, l'UTF-8 est probablement votre meilleur choix si vous faites beaucoup de mixte Européen/texte arabe. La plus Européenne du texte dans vos documents, le meilleur de l'UTF-8 choix sera.
UTF-16
UTF-16 vous donnera une meilleure optimisation de l'espace que de l'UTF-8 si vous utilisez principalement le texte arabe. Je ne sais pas à propos de l'arabe points de code, cependant, je ne sais pas si vous risquez d'avoir de longueur variable codages ici. (Je suppose que ce n'est pas un problème, cependant.) Si vous le faites, en fait, ont de longueur variable de codage, de toute la chaîne de traitement des problèmes de l'UTF-8 s'appliquent ici aussi. Si non, pas de problèmes.
D'autre part, si vous avez mélangé Européenne et des textes de l'arabe, UTF-16 sera moins efficace en terme d'espace. Aussi, si vous trouvez vous-même l'expansion de votre texte à d'autres textes, comme, par exemple, le Chinois, vous avez certainement revenir à longueur variable, les formes et les problèmes associés.
UTF-32
UTF-32 va pratiquement doubler votre espace. D'autre part, il est constant de taille pour tous connu (et, probablement, de l'inconnu;) script formes. Pour les matières premières, traitement de chaîne, c'est votre plus rapide, la meilleure option sans les problèmes que variable-length encoding vous fera. (Cela suppose que vous avez une chaîne de la bibliothèque qui connaît des caractères 32 bits, naturellement.)
Recommandation
Mon propre recommandation est que vous utilisez UTF-8 comme format externe (parce que tout le monde le prend en charge) pour le stockage, la transmission, etc. à moins que vous vraiment voir un avantage de taille-sage avec UTF-16. Donc, à tout moment vous lire une chaîne de caractères à partir du monde extérieur, il serait UTF-8 et tout le temps de vous en mettre un au monde extérieur, elle aussi, serait UTF-8. Au sein de votre logiciel, sauf si vous avez l'habitude de la manipulation massive des chaînes (dans ce cas, je vous recommande différentes structures de données, de toute façon!) Je vous recommande d'utiliser de l'UTF-16 ou UTF-32 au lieu (en fonction de si il ya toute la longueur variable des problèmes d'encodage dans votre UTF-16) pour la vitesse, l'efficacité et la simplicité du code.
UTF-8 est la solution la plus simple, car il fonctionne avec presque tout:
Bien sûr garder à l'esprit que:
... mais dans la plupart des cas, il n'est pas un gros problèmes. Il serait devenu l'un si vous de commencer la manipulation d'énormes documents.
UTF-8 prend souvent plus de place que d'un codage fait pour une ou un petit nombre de langues. Les lettres latines avec des signes diacritiques et des personnages à partir d'autres alphabétique des scripts prennent généralement un octet par caractère dans le bon encodage multi-octet, mais de prendre les deux en UTF-8. Asie de l'est les scripts ont généralement deux octets par caractère multi-octets codages encore prendre trois octets par caractère en UTF-8.