Coder avec Unicode/Conventions

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

De par un héritage qui est ce qu'il est, les fonctionnalités unicode disponibles varient d'un système à l'autre.

  • Sous Unix et Linux en général, le passage à Unicode s'est souvent fait à moindre coût en conservant des API orientées chaînes d'octets et en les utilisant pour du contenu UTF-8.
  • Sous Windows au contraire, l'API Windows a été doublée à l'aide d'un jeu de macroprocédures qui permet par configuration de passer d'une API 8 bits (dite ANSI dans le monde Microsoft) à une API 16 bits (dite Unicode dans le monde Microsoft) pour les chaînes de caractères.

Cette page recense les conventions spécifiques à certains langages.

Perl[modifier | modifier le wikicode]

Depuis la version 5.6 en interne, Perl utilise des unités de code dites larges pour représenter les chaînes[1].

De ce fait, en Perl on distingue la notion de chaînes de caractère de la notion de chaîne d'octets.

C[modifier | modifier le wikicode]

En langage C, historiquement l'unité de code utilisé est dénommé char et représente un multiplet de 7 ou 8 bits. De nos jours, en pratique, le char peut être considéré comme un octet. Ceci conduit à ce que le langage C n'est pas nativement orienté vers unicode, même si l'UTF-8 peut être utilisé nativement. Il est nécessaire d'utiliser les APIs ad hoc en fonction du besoin.

Toutefois, il existe deux formes d’extensions:

  • les extensions de Windows et de visual studio qui définissent un mode dit unicode correspondant à des chaines de 16 bits.
  • les extensions liées aux nouvelles versions des normes du langages.

Java[modifier | modifier le wikicode]

En Java, les chaînes sont représentées par la classe String, alors qu'un caractère isolé est représenté par la classe Char. Ces deux classes reposent sur le type sous-jascent char, une unité de code de 16 bits.

JavaScript[modifier | modifier le wikicode]

PHP[modifier | modifier le wikicode]

Python[modifier | modifier le wikicode]

Historiquement, le python s'est développé avec str représentant des chaînes anciennes (8 bits).

Pour l'arrivée de Python 3, le concept unicode a été introduit.


Le langage n'étant que faiblement typé, il convient donc de faire attention au type de chaînes manipulés.

.NET[modifier | modifier le wikicode]

Vala[modifier | modifier le wikicode]

Vala utilise des chaînes de caractères enregistrées sur des unités de 8 bits (octets). L'API de la classe string est conçue pour l'UTF-8.


PL/SQL[modifier | modifier le wikicode]

Oracle prends en charge de manière fiable les types de données Unicode au travers des types NCHAR, NVARCHAR2, et NCLOB[2].

Références[modifier | modifier le wikicode]

  1. http://perldoc.perl.org/perlunicode.html#Important-Caveats
  2. docs.oracle.com/cd/B10501_01/server.920/a96524/c13datyp.htm