7
votes

UTF-8 est-il acceptable pour lire / écrire des langues asiatiques?

J'accepte la saisie de l'utilisateur via un formulaire Web (comme UTF-8), ce qui l'enregistre sur une DB MySQL (à l'aide de l'ensemble de caractères UTF-8) et générant un fichier texte ultérieurement (codé en tant que UTF-8). Je me demande s'il y a une chance de corruption de texte à l'aide de UTF-8 au lieu de quelque chose comme UCS-2? UTF-8 est-il suffisant dans cette situation?


0 commentaires

5 Réponses :


14
votes

Plus que cela, c'est peut-être le seul codage que vous devriez jamais envisager d'utiliser.

Une grande lecture sur le sujet:

Le minimum absolu Chaque développeur de logiciel absolument doit connaître de manière positive à propos de Unicode et des ensembles de caractères (aucune excuse !) Par Joel Spolsky


4 commentaires

Merci pour le lien - je lis cela il y a un moment. Je connais les différents codages (caractères de longueur fixe vs caractères de longueur variable), mais pour une raison quelconque, j'avais l'impression que UCS-2 pourrait représenter plus de caractères. Je suppose que j'avais tort. :)


Les UCS-2 et UTF-16 sont souvent erronés - pour certains points de code, ils sont équivalents, mais pour d'autres, UTF-16 apporte des points de codes de substitution pour faire face au fait que tous les caractères Unicode ne correspondent pas à 16 bits. Windows et Java, accessoirement, utilisent réellement UTF-16, pas UCS-2.


Notez que UCS-2 a des caractères de longueur fixe, tandis que UTF-16 a des caractères de longueur variable. Les deux travaillent dans des morceaux de 16 bits. (Notez également que UCS-2 est obsolète.)


Il est absolument approprié de les stocker, cependant, si vous avez affaire à CJK, vous voudrez peut-être aussi économiser la langue de la chaîne que vous essayez de préserver



2
votes

utf-8 peut représenter tout caractère Unicode. En tant que tel, vous ne devriez avoir aucun problème avec UTF-8.

En fait, UTF-8 peut même représenter certains caractères que UCS-2 ne peut pas (UCS-2 ne peut représenter que U + 0000 via U + FFFF; UTF-8, UTF-16, UTF-16 et UCS-4 Manipulent tous les points de code Unicode )


0 commentaires

1
votes

Autant que je sache, UTF-8 est conçu pour englober toutes ces variations unicodes antérieures, donc oui, il convient d'aller bien à l'utiliser sur UCS-2. Voir http://www.unicode.org/versions/unicode5.1.0/ et regardez dans la barre latérale pour les chapitres de livre 5.0; Les parties 9-12 devraient être ce que vous avez après.


0 commentaires

10
votes

Si vous travaillez avec beaucoup de texte asiatique (plus que le texte latin), vous voudrez peut-être envisager UFF-16. UTF-8 peut représenter avec précision l'ensemble de la plage d'unicode de caractères, mais elle est optimisée pour le texte principalement ASCII. UTF-16 est efficace spatiale sur l'ensemble de plan de base multilingue .

Mais utf-8 est très certainement "assez bon" - il ne sera pas une corruption résultant simplement parce que vous utilisez UTF-8 sur, disons, UTF-16.


0 commentaires

0
votes

Cela fonctionne merveilleusement avec Devanagari.


0 commentaires