Ne Lua support de l'Unicode?
Basée sur le lien ci-dessous, je suis confus quant à savoir si le langage de programmation Lua prend en charge Unicode.
http://lua-users.org/wiki/LuaUnicode
Il semble qu'il n'mais elle a ses limites. Simplement, je ne comprends pas, sont la limitation de quelque chose de gros/de la clé ou pas une grosse affaire?
Vous devez vous connecter pour publier un commentaire.
Vous pouvez certainement magasin des chaînes unicode en lua, comme utf8. Vous pouvez les utiliser comme vous le feriez pour n'importe quelle chaîne.
Cependant Lua ne fournit pas de prise en charge par défaut de niveau plus élevé "conscient unicode" des opérations sur ces cordes, par exemple, le comptage de longueur de chaîne de caractères, la conversion inférieure et supérieure de cas, etc. Si cette absence est significative pour vous dépend vraiment de ce que vous avez l'intention de faire avec ces chaînes.
Approches possibles, en fonction de votre utilisation:
Si vous voulez juste d'entrée/de sortie/de stocker des chaînes, et de l'utiliser comme "l'ensemble des unités" (pour l'indexation de la table, etc), vous ne pouvez pas besoin de toute une manipulation spéciale à tous. Dans ce cas, vous venez de traiter ces chaînes comme des blobs binaires.
En raison de l'utf8 la conception intelligente, certains types de manipulation de chaîne peut être fait sur les chaînes contenant utf8 et renvoie le résultat correct sans prendre aucun soin spécial.
Par exemple, vous pouvez ajouter des chaînes, les séparer de l'autre avant/après des caractères ascii, etc. Par exemple, si vous avez une chaîne
"開発.txt"
et que vous recherchez "." en ce que la chaîne à l'aide destring.find (string_var, ".")
, et de la diviser ensuite à l'aide de la normalestring.sub
fonction dans"開発"
et".txt"
, ces chaînes de résultat sera correct utf8 chaînes, même si vous n'êtes pas à l'aide de toute sorte de "unicode" algorithme.De même, vous pouvez faire cas des conversions uniquement les caractères ASCII dans les chaînes de caractères (ceux avec le haut-bit zéro), et de traiter le reste des chaînes comme binaire sans les visser en place.
Certains utf8-connaissance des opérations sont tellement simple qu'il est facile de l'écrire ses propres fonctions de les faire.
Par exemple, pour calculer la longueur dans le jeu de caractères unicode d'une chaîne, juste compter le nombre de caractères avec le haut-bit zéro (caractères ASCII), et le nombre de caractères avec les deux premiers bits
11
("octets" pour les caractères non-ASCII); la longueur est égale à la somme de ces deux.Pour les opérations plus complexes—par exemple, au cas de conversion sur les caractères non-ASCII, etc.—vous aurez probablement à utiliser Lua bibliothèque unicode, telles que celles sur l' (mentionné précédemment) Lua-utilisateurs Unicode page
Lua n'a pas de support de l'unicode (autres que d'accepter n'importe quel octet de valeur dans les chaînes). La bibliothèque slnunicode a beaucoup de chaîne unicode fonctions, cependant. Par exemple
unicode.utf8.len
.(note: cette réponse est complètement volé de grom commentaire sur une autre question - je pense qu'il mérite sa propre réponse)
Si vous voulez une réponse courte, c'est "oui et non" que de mettre sur le site lié.
Lua prend en charge Unicode dans la façon dont la spécification, le stockage et l'interrogation des octets arbitraires valeurs dans des chaînes est pris en charge, de sorte que vous pouvez stocker n'importe quel type d'Unicode codant une chaîne codée en Lua chaîne.
Ce qui n'est pas pris en charge est itération par de caractères unicode, il n'y a pas de norme en fonction de la longueur de la chaîne de caractères unicode etc. Donc, au plus haut niveau de type de support de l'Unicode (comme ce qui est disponible en Python avec la longueur, la basse -> haut de cas de conversion, le codage arbitraire de codage, etc) n'est pas disponible.
Lua 5.3 a été libéré. Il est livré avec une base en UTF-8 bibliothèque.
Vous pouvez utiliser le
utf8
bibliothèque pour faire des choses à propos de l'encodage UTF-8, comme obtenir la longueur d'une chaîne UTF-8 (pas le nombre d'octets questring.len
), correspondant à chacun des personnages (pas d'octets), etc.Il ne fournit pas de support natif d'autre que de l'encodage, comme est ce personnage un caractère Chinois?
Il prend en charge, dans le sens que vous pouvez utiliser Unicode en Lua cordes. Il repose précisément sur ce que vous avez l'intention de faire, mais la plupart des limitations peuvent être assez facilement contourné par l'extension Lua avec vos propres fonctions.