Question

J'aimerais disposer d'un emplacement canonique pour regrouper des informations sur le support Unicode dans différentes langues. Cela fait-il partie de la langue principale? Est-ce fourni dans les bibliothèques? N'est-il pas disponible du tout? Existe-t-il une ressource populaire pour les informations Unicode dans une langue? Une langue par réponse s'il vous plaît. Aussi, si vous pouviez faire de la langue un titre qui le rende plus facile à trouver.

Pas de solution correcte

Autres conseils

Perl

Perl dispose principalement d’un support intégré Unicode. Sorte de. De perldoc:

  • perlunitut - Didacticiel sur l'utilisation de Unicode en Perl. En gros, enseigne en termes absolus ce que vous devriez et ne devriez pas faire aussi loin que Unicode. Couvre les bases.
  • perlunifaq - Questions fréquentes sur Unicode en Perl.
  • perluniintro - Introduction à Unicode en Perl. Moins "prêché" perlunitut .
  • perlunicode - Pour quand il faut absolument tout savoir sur Unicode et Perl .

Python 3k

Python 3k (ou 3.0 ou 3000) propose une nouvelle approche pour la gestion de texte (Unicode) et de données:
Texte vs. Données au lieu de V Unicode. 8 bits . Voir aussi le HOWTO Unicode .

Java

Comme avec .NET, Java utilise UTF-16 en interne: java.lang.String

  

Un String représente une chaîne au format UTF-16 dans laquelle les caractères supplémentaires sont représentés par des paires de substitution (voir la section Représentations de caractères Unicode dans le Character pour plus d'informations). Les valeurs d'index font référence à des unités de code char , de sorte qu'un caractère supplémentaire utilise deux positions dans une String .

HQ9 +

La commande Q dispose d'un support Unicode complet dans la plupart des implémentations.

Delphi

Delphi 2009 prend entièrement en charge le format Unicode. Ils ont modifié la mise en œuvre de la chaîne pour utiliser par défaut le codage Unicode 16 bits, et la plupart des bibliothèques, y compris les bibliothèques tierces, prennent en charge le format Unicode. Voir Delphi et Unicode de Marco Cantù.

Avant Delphi 2009, la prise en charge d'Unicode était limitée, mais WideChar et WideString permettaient de stocker la chaîne codée 16 bits. Voir Unicode dans Delphi pour plus d'informations.

Remarque, vous pouvez toujours développer une application CJKV bilingue sans utiliser Unicode. Par exemple, la chaîne codée Shift JIS pour le japonais peut être stockée à l'aide de la version simple. AnsiString .

OK

Le langage de programmation Go de Google prend en charge le format Unicode et fonctionne avec UTF-8.

Python

Python 2 a les classes str et unicode . Les objets str stockent des octets, les objets unicode stockent des caractères UTF-16. La plupart des fonctions de bibliothèque prennent en charge les deux (par exemple, os.listdir ('.') renvoie une liste de str , os.listdir (u '.') retourne une liste d'objets unicode ). Les deux ont des méthodes encoder et décoder .

Python 3 a essentiellement renommé unicode en str . L'équivalent Python 3 de str serait le type octets . octets a une méthode décoder et str et une méthode encode . Depuis Python 3.3 , les objets str en utilisent un en interne de plusieurs encodages afin d'économiser de la mémoire. Pour un programmeur Python, cela ressemble toujours à une séquence unicode abstraite.

Python prend en charge:

  • encodage / décodage
  • normalisation
  • conversion de cas simple et fractionnement sur des espaces
  • recherche de caractères par leur nom

Python ne prend pas en charge / a une prise en charge limitée pour:

  • classement (limité)
  • conversions en cas spéciaux où il n'y a pas de correspondance 1: 1 entre les majuscules et les minuscules
  • expressions régulières ( c'est un travail sur )
  • segmentation du texte
  • traitement de texte bidirectionnel

Voir aussi: La vérité sur Unicode en Python

JavaScript

On dirait qu'avant JS 1.3, Unicode n'était pas pris en charge. À partir de 1,5, les formats UTF-8, UTF-16 et UCS-2 sont tous pris en charge. Vous pouvez utiliser des séquences d'échappement Unicode dans des chaînes, des expressions rationnelles et des identificateurs. Source

.NET (C #, VB.NET, ...)

Magasins .NET chaînes en interne sous la forme d'une séquence de System.Char . Un System.Char représente une unité de code UTF-16.

Dans la documentation MSDN sur System.Char :

  

Le .NET Framework utilise le caractère .   structure pour représenter un Unicode   personnage. Le standard Unicode   identifie chaque caractère Unicode avec   un numéro scalaire unique de 21 bits appelé   point de code et définit le format UTF-16   forme de codage qui spécifie comment un   le point de code est codé dans une séquence   d'une ou plusieurs valeurs 16 bits. Chaque   La valeur 16 bits va de hexadécimale   0x0000 à 0xFFFF et est stocké dans   une structure Char .

Ressources supplémentaires:

Tcl

Les chaînes Tcl sont des séquences de caractères Unicode depuis Tcl 8.1 (1999). ). En interne, ils se transforment de manière dynamique entre UTF-8 (strictement de la même manière. UTF-8 modifié en tant que Java en raison de la gestion des caractères U + 00000 ) et UCS-2 (dans endianness et BOM de l’hôte, bien sûr). Toutes les chaînes externes (à une exception près), y compris celles utilisées pour communiquer avec le système d'exploitation, sont Unicode en interne avant d'être transformées en tout codage requis pour l'hôte (ou configurées manuellement sur un canal de communication). L'exception concerne les endroits où les données sont copiées entre deux canaux de communication . avec un codage commun (et quelques autres restrictions non pertinentes ici) où un transfert binaire direct sans copie est utilisé.

Les caractères extérieurs au BMP ne sont actuellement gérés ni en interne ni en externe. C’est un problème connu.

Schéma R6RS

Nécessite la mise en oeuvre de Unicode 5.1. Toutes les chaînes sont au format "Unicode".

Rouille

Les chaînes de

Rust ( std :: String et & amp; str ) sont toujours valides en UTF-8 et n'utilisent pas de terminateurs nuls. Par conséquent, elles ne peuvent pas être indexé comme un tableau, comme ils peuvent être en C / C ++, etc. Ils peuvent être découpés un peu comme Go en utilisant .get depuis 1.20, avec l’avertissement qu'il échouera si vous essayez de couper en tranches au milieu de un point de code.

Rust dispose également de OsStr / OsString pour interagir avec le système d'exploitation hôte. C'est un tableau d'octets sous Unix (contenant toute séquence d'octets). Sous Windows, c’est WTF-8 (un super ensemble d’UTF-8 qui gère les chaînes Unicode mal formées autorisées dans Windows et Javascript), & amp et Chaîne . peut être librement converti en OsStr ou OsString , mais nécessite des vérifications pour convertir l’opposée. Soit en omettant unicode non valide, soit en le remplaçant par le caractère de remplacement Unicode. (Il existe également Path / PathBuf , qui ne sont que des wrappers autour de OsStr / OsString ).

Il existe également les types CStr et CString , qui représentent des chaînes C terminées par Null, comme OsStr sous Unix et pouvant contenir des octets arbitraires.

Rust ne prend pas directement en charge le format UTF-16. Mais peut convertir OsStr en UCS-2 sous Windows.

Common Lisp (SBCL et CLisp)

Selon ceci , SBCL et CLisp prennent en charge le format Unicode.

Objective-C

Aucun composant intégré, à l'exception de tout ce qui est disponible dans la bibliothèque de chaînes C.

Cependant, une fois que vous avez ajouté des cadres & # 8230;

Fondation (cacao et toucher de cacao) et Fondation de base

NSString et CFString implémentent chacun une classe de chaîne entièrement Unicode (en fait plusieurs classes, en tant que détail d'implémentation). Les deux sont & # 8220; sans-pont-pontées & # 8221; de sorte que l’API de l’un puisse être utilisé avec des instances de l’autre, et inversement.

Pour les données qui ne représentent pas nécessairement du texte, il y a NSData et CFData. NSString fournit des méthodes et CFString fournit des fonctions permettant de coder du texte en données et de décoder du texte à partir de données. Core Foundation prend en charge plus d'une centaine de codages différents, y compris toutes les formes de fichiers UTF. Les codages sont divisés en deux groupes: codages intégrés pris en charge partout et encodages externes , qui sont au moins pris en charge sur Mac OS X.

NSString fournit des méthodes de normalisation aux formes D, KD, C ou KC. Chacun renvoie une nouvelle chaîne.

NSString et CFString offrent une grande variété d’options de comparaison / classement. Voici Drapeaux d’option de comparaison Foundation et Indicateurs d'option de comparaison de Core Foundation . Ils ne sont pas tous synonymes; Par exemple, Core Foundation utilise par défaut la comparaison littérale (basée sur des points de code stricts), tandis que Foundation établit la comparaison non littérale (en autorisant la comparaison des caractères accentués).

Notez que Core Foundation ne nécessite pas Objective-C; en fait, il a été créé pour fournir la plupart des fonctionnalités des programmeurs Foundation aux développeurs Carbon, qui utilisaient directement le C ou le C ++. Cependant, je soupçonne que son utilisation la plus moderne est dans les programmes Cocoa ou Cocoa Touch, qui sont tous écrits en Objective-C ou Objective-C ++.

C / C ++

C

C avant C99 n’a pas de support unicode intégré. Il utilise des tableaux de caractères terminés par zéro ( char * ou char [] ) en tant que chaînes. Un char est spécifié par un octet (8 bits).

C99 spécifie des fonctions wcs en plus des anciennes fonctions str (par exemple, strlen - > wcslen ). Ces fonctions prennent wchar_t * au lieu de char * . wchar_t correspond à un type de caractère large. La taille de wchar_t est spécifique au compilateur et peut être aussi petite que 8 bits. Bien que différents compilateurs utilisent des tailles différentes, il s’agit généralement de 16 bits (UTF-16) ou de 32 bits (UTF-32).

La plupart des fonctions de la bibliothèque C sont transparentes pour UTF-8. Par exemple. si votre système d'exploitation prend en charge UTF-8 (et que UTF-8 est configuré en tant que jeu de caractères de votre système), créer un fichier à l'aide de fopen en passant une chaîne encodée en UTF-8 créera un fichier correctement nommé.

C ++

La situation en C ++ est très similaire ( std :: string - > std :: wstring ), mais des efforts sont au moins déployés pour obtenir une sorte de < a href = "http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3572.html" rel = "nofollow noreferrer"> prise en charge unicode dans la bibliothèque standard .

D

D prend en charge les formats UTF-8, UTF-16 et UTF-32 (respectivement char, wchar et dchar). La table avec tous les types peut être trouvée ici .

PHP

Il existe déjà un fil entier à ce sujet sur SO!

Rubis

La seule chose que je puisse trouver pour Ruby est assez vieille et ne ressemble pas vraiment à un rubiste, je ne suis pas sûr de sa précision.

  

Pour mémoire, Ruby prend en charge utf8, mais pas le multi-octets. En interne, il suppose généralement que les chaînes sont des vecteurs octets, bien qu'il existe des bibliothèques et des astuces que vous pouvez généralement utiliser pour que les choses fonctionnent.

Nous avons constaté que ici .

Ruby 1.9

Ruby 1.9 attache des encodages aux chaînes. Les chaînes binaires utilisent l'encodage "ASCII-8BIT". Bien que le codage par défaut soit généralement UTF-8 sur tout système moderne, vous ne pouvez pas supposer que toutes les fonctions de bibliothèque tierces renvoient toujours des chaînes dans ce codage. Il peut renvoyer tout autre encodage (par exemple, certains analyseurs syntaxiques yaml le font dans certaines situations). Si vous concaténez deux chaînes d'encodage différent, vous obtiendrez un Encoding :: CompatibilityError .

Arc

Arc n’a aucun support Unicode. Pourtant .

Lua

Lua 5.3 possède une bibliothèque intégrée utf8 , qui gère le codage UTF-8. Il vous permet de convertir une série de points de code en séquence d'octets correspondante et inversement, obtenir la longueur (le nombre de points de code dans une chaîne), effectuer une itération sur les points de code d'une chaîne, obtenir la position d'octet du . n ème point de code. Il fournit également un modèle à utiliser par les fonctions de correspondance de modèles de la bibliothèque string , qui correspond à une séquence d'octets UTF-8.

Lua 5.3 contient des séquences d'échappement de points de code Unicode pouvant être utilisées dans des littéraux de chaîne (par exemple, "\ u {61}" / pour "a" ). Ils traduisent en séquences d'octets UTF-8.

Le code source de Lua peut être codé en UTF-8 ou n’importe quel codage dans lequel les caractères ASCII occupent un octet. UTF-16 et UTF-32 ne sont pas compris par l'interprète vanille Lua. Mais les chaînes peuvent contenir n’importe quel codage ou des données binaires arbitraires.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top