SMS accentués surfacturés ?

Les SMS, ces messages écrits que l'on s'échange sur téléphone mobile, sont habituellement limités à 160 caractères. Mais sur certains téléphones cellulaires, dès lors qu'ils contiennent des caractères accentués, la taille de ces messages est réduite à 70 caractères. Au-delà de ce nombre, un texto supplémentaire. Un abonné peut donc payer deux ou trois fois plus cher un message SMS avec certains téléphones portables, sans le savoir.

Voyons ce qui explique techniquement cette surfacturation.

Un message SMS = 1120 bits

 Les téléphones cellulaires/portables peuvent envoyer des messages SMS d'une longueur de 1120 bits soit 160 caractères codés sur 7 bits ou 70 caractères codés sur 16 bits. Ces caractères sur 16 bits sont des caractères Unicode, techniquement de l'UCS-2.

    Pour des raisons évidentes d'économie, les caractères sont codés par défaut sur 7 bits. Cela marche pour la majorité des caractères français.

    Voici la table du codage 7 bits par défaut.


3GPP TS 23.038 / GSM 03.38

x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF
0x @ £ $ ¥ è é ù ì ò Ç LF Ø ø CR Å å
1x Δ _ Φ Γ Λ Ω Π Ψ Σ Θ Ξ ESC Æ æ ß É
2x SP ! " # ¤ % & ' ( ) * + , - . /
3x 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
4x ¡ A B C D E F G H I J K L M N O
5x P Q R S T U V W X Y Z Ä Ö Ñ Ü §
6x ¿ a b c d e f g h i j k l m n o
7x p q r s t u v w x y z ä ö ñ ü à



Les caractères qui manquent

    Plusieurs choses à remarquer :

  1.   Il n'y a pas de « ô », « â »,  « ê » circonflexes.
  2.   Il y a bien un « ù », mais il n'y a qu'un mot en français qui l'utilise je pense. Où...
  3.  Il y a un « Ç » majuscule, mais pas de minuscule. Cette lettre est très peu utile, plusieurs fabricants semblent remplacer ce caractère par un « ç » minuscule comme le conseille Unicode. Il semble qu'Apple ait pour sa part décidé de coder sur l'Iphone le Ç (et non le ç) en se tenant à une interprétation stricte de la norme.

Dès qu'un caractère à accent circonflexe ou un c cédille (majuscule ou minuscule selon le fabricant) est saisi, le message ne pouvant plus être codé à l'aide de caractères sur 7 bits avec le jeu de caractères par défaut, le message est codé en UCS-2. L'UCS-2 est assimilable à de l'Unicode codé sur 16 bits limité aux caractères du plan multilingue de base, tous les caractères Unicode (ceux des plans complémentaires) ne sont pas donc accessibles, mais ceux accessibles suffisent très largement pour tous les textes français.

La longueur maximale d'un message passe alors à 70 caractères UCS-2. Un texte de 160 caractères UCS-2 sera donc codé sur trois messages SMS habituels de 1120 bits.

Codages nationaux sur 7 bits

Maintenant, il existe des codages nationaux sur 7 bits qui remplacent le codage par défaut en indiquant dès le début du message SMS dans quelle langue est codé le message, tout ceci se fait de façon invisible pour l'utilisateur.  Ces codages nationaux permettent d'écrire des messages dans de nombreuses langues correctement tout en ne payant pas deux ou trois fois plus cher...  Ces codages existent pour le turc, l'espagnol, le portugais, le bengali, le goudjarati, l'hindi, le tamoul, l'ourdou, etc.


Exemple du codage sur 7 bits pour le portugais avec tous les caractères de base pour le portugais (ç, Ç, ê, Ê,etc.)

  0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70
0x00 @ * 0 Í P ~ p
0x01 £ _  ! 1 A Q a q
0x02 $ ª " 2 B R b r
0x03 ¥ Ç # 3 C S c s
0x04 ê À º 4 D T d t
0x05 é  % 5 E U e u
0x06 ú ^ & 6 F V f v
0x07 í \ ' 7 G W g w
0x08 ó ( 8 H X h x
0x09 ç Ó ) 9 I Y i y
0x0A ¹ | *  : J Z j z
0x0B Ô ³ +  ; K Ã k ã
0x0C ô Â , < L Õ l õ
0x0D ² â - = M Ú m `
0x0E Á Ê . > N Ü n ü
0x0F á É /  ? O § o à


Lacune dans la normalisation ?

Malheureusement, il n'existe pas de telle table de codage pour le français. Il semble qu'il s'agisse d'une lacune due à un manque d'implication des organismes de normalisation francophone. Ce ne serait pas la première fois que ce type de lacune se présente par un manque d'attention de la part des informaticiens et des organismes de normalisation francophones. C'est ainsi que la norme ISO 8859-1 (Latin-1), la norme internationale ISO qui devait permettre de coder les langues de l'Europe occidentale avec des caractères de 8 bits, codait le ÿ mais pas les caractères Ÿ, œ et Œ. On pouvait écrire Croÿ, mais pas HAŸ-LES-ROSES, ni Œuvre ou cœur.  L'ISO 8859-1 était pourtant une norme internationale récente qui devait régir l'échange de données sur 8 bits.

Voir la note ici pour la raison de cet oubli dans l'ISO 8859-1.

Cette omission dans l'ISO Latin-1 ne fut corrigée que plusieurs années plus tard dans l'ISO 8859-15 par l’intervention d'un normalisateur québécois, Alain Labonté.


« Je ne connais pas d’autre ressource moderne, ni en anglais ni en français, regroupant une telle gamme de sujets utiles, et les expliquant de façon si claire et si accessible à un large public. J’espère que vous apprécierez cet ouvrage autant que moi. »

Mark Davis, Ph. D.
Président et cofondateur du Consortium Unicode

Commandez en ligne           

Livre Unicode 5.0 en pratique Préface

Table des matières

Avant-propos

Premier Chapitre

Index

Errata  Nouveau