Coder avec Unicode/Structure de donnée

Un livre de Wikilivres.
Sauter à la navigation Sauter à la recherche
Coder avec Unicode

Développer avec Unicode
Coder avec Unicode
Sommaire

Le texte

Les interfaces

Les algorithmes

Annexes

Modifier ce modèle ce sommaire


Une chaîne de caractères est à la fois conceptuellement une suite ordonnée de caractères et physiquement une suite ordonnée d'unité de code (code unit). La chaîne de caractères est un type de donnée dans de nombreux langages informatiques (Voir chaîne de caractères sur Wikipédia). Toutefois, la structure interne d'une chaîne peut varier d'un langage à l'autre, notamment sur les unités de code utilisées. Cela peut aussi avoir un impact sur la manière d'écrire es chaînes littérales dans un code source.


C[modifier | modifier le wikicode]

Typages[modifier | modifier le wikicode]

Constantes littérales[modifier | modifier le wikicode]

Sous Visual Studio, il est possible d'écrire :

L"this is a literal string"

Cas du C++[modifier | modifier le wikicode]

			// UTF-8 encoded string:
	const char *s3 = u8"Euros \u20AC and G clef \U0001D11E";
	const char16_t *s4 = u"Euros \u20AC and G clef \U0001D11E";
			// UTF-32 encoded string:
	const char32_t *s5 = U"Euros \u20AC and G clef \U0001D11E";
	
	std::u16string s6 = s4; // u16string = basic_string<char16_t>	
	std::u32string s7 = s5; // u32string = basic_string<char32_t>

Python[modifier | modifier le wikicode]

Typages[modifier | modifier le wikicode]

En Python, les types de données sont str et unicode.

str correspond à une chaîne d'octets.

En python 2, l'utilisation de l'Unicode s'avère assez complexe pour le néophyte. La version 3 améliore grandement ces désavantages.


Constantes littérales[modifier | modifier le wikicode]

En Python 2, les chaînes de caractères unicode littérales sont introduites pour la lettre u.

Exemple[1] :

>>> unichr(40960)
u'\ua000'
>>> ord(u'\ua000')
40960

Python 2[modifier | modifier le wikicode]

En python 2, le codage des caractères dépend de l'environnement logiciel utilisé, dans le cas d'un système windows.

import sys 
print sys.stdin.encoding ## cp1252 sous IDLE, cp850 sous la console Python 
machaine = 'äâ'  ## machaine est une chaîne encodée selon l'encodage sys.stdin.encoding 
unicode(machaine, sys.stdin.encoding)  ##  u'\xe4\xe2'


Pour déclarer une chaine Unicode, vous devez la commencer par u. Si vous voulez insérer un caractère Unicode, il vous faut alors saisir le caractère Unicode correspondant

Exemple :

nationalites = []                      # nous déclarons ici une liste de nationalités

nationalites.append(u"am\u00E9ricain") # nous ajoutons la nationalité américaine à cette liste

Perl[modifier | modifier le wikicode]

Constantes littérales[modifier | modifier le wikicode]

Exemple [2].

my $smiley = "\x{263a}";

$smiley =~ /\x{263a}/;

my $hebrew_alef = chr(0x05d0);

use charnames ':full';
my $arabic_alef = "\N{ARABIC LETTER ALEF}";

Voir aussi en:Perl Programming/Unicode UTF-8.

PHP[modifier | modifier le wikicode]

 print gettype('e'); //string
 print gettype('é'); //string

Java[modifier | modifier le wikicode]

JavaScript[modifier | modifier le wikicode]

A priori, type String de javascipt contient du texte dans un encodage donné. En particulier, cet encodage peut-être lié à UTF-16.[3].

.NET[modifier | modifier le wikicode]

Vala[modifier | modifier le wikicode]

Typage[modifier | modifier le wikicode]

En Vala, les chaînes sont enregistrées au moyen de la classe string

Constantes litérales[modifier | modifier le wikicode]

		dostream.put_string ("ΑαΒβΓγΔδΕεΖζΗηΘθ\n");
		dostream.put_string ("ΙιΚκΛλΜμΝνΞξΟοΠπ\n");
		dostream.put_string ("ΡρΣσΤτΥυΦφΧχΨψΩω\n");


PL/SQL[modifier | modifier le wikicode]

Plusieurs familles de types de textes existent:

codage nombre fixé de caractères nombre variable de caractères
caractère CHAR VARCHAR2
caractère unicode (cf À la découverte d'Unicode ) NCHAR NVARCHAR2

(cf Oracle/PL/SQL#Les types natifs )

Notes[modifier | modifier le wikicode]

  1. http://docs.python.org/2/howto/unicode.html
  2. http://perl.enstimac.fr/DocFr/perluniintro.html
  3. Par exemple, Ecma 262 indique en §4.3.16 qu'une String value qui est une séquence d'entiers 16 bits non signés. Chaque multiplet de 16-bits est une unité de code de texte UTF-16. ECMAScript ne contraint pas ces valeurs. À ce sujet on pourra consulter le livre À la découverte d'Unicode.