Obligement - L'Amiga au maximum

Jeudi 25 avril 2024 - 12:15  

Translate

En De Nl Nl
Es Pt It Nl


Rubriques

Actualité (récente)
Actualité (archive)
Comparatifs
Dossiers
Entrevues
Matériel (tests)
Matériel (bidouilles)
Points de vue
En pratique
Programmation
Reportages
Quizz
Tests de jeux
Tests de logiciels
Tests de compilations
Trucs et astuces
Articles divers

Articles in english


Réseaux sociaux

Suivez-nous sur X




Liste des jeux Amiga

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z,
ALL


Trucs et astuces

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Glossaire

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Galeries

Menu des galeries

BD d'Amiga Spécial
Caricatures Dudai
Caricatures Jet d'ail
Diagrammes de Jay Miner
Images insolites
Fin de jeux (de A à E)
Fin de Jeux (de F à O)
Fin de jeux (de P à Z)
Galerie de Mike Dafunk
Logos d'Obligement
Pubs pour matériels
Systèmes d'exploitation
Trombinoscope Alchimie 7
Vidéos


Téléchargement

Documents
Jeux
Logiciels
Magazines
Divers


Liens

Associations
Jeux
Logiciels
Matériel
Magazines et médias
Pages personnelles
Réparateurs
Revendeurs
Scène démo
Sites de téléchargement
Divers


Partenaires

Annuaire Amiga

Amedia Computer

Relec


A Propos

A propos d'Obligement

A Propos


Contact

David Brunet

Courriel

 


Dossier : Le codage des caractères
(Article écrit par Jean-François Pillou - 2003)


Note : ce document est issu de Comment Ça Marche et mis à disposition sous les termes de la licence Creative Commons.

Le codage des informations

Le morse a été le premier codage à permettre une communication longue distance. C'est Samuel F. B. Morse qui l'a mis au point en 1844. Ce code est composé de points et de tirets (un codage binaire en quelque sorte...). Il permit d'effectuer des communications beaucoup plus rapides que ne le permettait le système de courrier de l'époque aux États-Unis : le Pony Express. L'interpréteur était l'homme à cette époque, il fallait donc une bonne connaissance du code...

De nombreux codes furent inventés dont le code d'Émile Baudot (portant d'ailleurs le nom de code Baudot, les Anglais l'appelaient en revanche Murray Code).

Le 10 mars 1876, le Dr Graham Bell met au point le téléphone, une invention révolutionnaire qui permet de faire circuler de l'information vocale dans des lignes métalliques. Pour l'anecdote, la Chambre des représentants a décidé que l'invention du téléphone revenait à Antonio Meucci. Ce dernier avait en effet déposé une demande de brevet en 1871, mais n'avait pas pu financer celle-ci au-delà de 1874.

Ces lignes permirent l'essor des téléscripteurs, des machines permettant de coder et décoder des caractères grâce au code Baudot (les caractères étaient alors codés sur 5 bits, il y avait donc 32 caractères uniquement...).

Dans les années 1960, le code ASCII (American Standard Code for Information Interchange) est adopté comme standard. Il permet le codage de caractères sur 8 bits, soit 256 caractères possibles.

Qu'est-ce que le code ASCII ?

La mémoire de l'ordinateur conserve toutes les données sous forme numérique. Il n'existe pas de méthode pour stocker directement les caractères. Chaque caractère possède donc son équivalent en code numérique : c'est le code ASCII (American Standard Code for Information Interchange - traduisez "Code Americain Standard pour l'Echange d'Informations"). Le code ASCII de base représentait les caractères sur 7 bits (c'est-à-dire 128 caractères possibles, de 0 à 127).

Les codes 0 à 31 ne sont pas des caractères. On les appelle caractères de contrôle car ils permettent de faire des actions telles que :
  • Retour à la ligne (CR).
  • Bip sonore (BEL).
  • Les codes 65 à 90 représentent les majuscules.
  • Les codes 97 à 122 représentent les minuscules (il suffit de modifier le 6e bit pour passer de majuscules à minuscules, c'est-à-dire ajouter 32 au code ASCII en base décimale).
Table de caractères ASCII

Caractère Code ASCII Code hexadécimal
NUL (Null) 0 00
SOH (Start of heading) 1 01
STX (Start of text) 2 02
ETX (End of text) 3 03
EOT (End of transmission) 4 04
ENQ (Enquiry) 5 05
ACK (Acknowledge) 6 06
BEL (Bell) 7 07
BS (Backspace) 8 08
TAB (Tabulation horizontale) 9 09
LF (Line Feed, saut de ligne) 10 0A
VT (Vertical tabulation, tabulation verticale) 11 0B
FF (Form feed) 12 0C
CR (Carriage return, retour à la ligne) 13 0D
SO (Shift out) 14 0E
SI (Shift in) 15 0F
DLE (Data link escape) 16 10
DC1 (Device control 1) 17 11
DC2 (Device control 2) 18 12
DC3 (Device control 3) 19 13
DC4 (Device control 4) 20 14
NAK (Negative acknowledgement) 21 15
SYN (Synchronous idle) 22 16
ETB (End of transmission block, fin de bloc de transmission) 23 17
CAN (Cancel, annulation) 24 18
EM (End of medium, fin du médium) 25 19
SUB (Substitute, substitut) 26 1A
ESC (Escape, caractère d'échappement) 27 1B
FS (File separator, séparateur de fichier) 28 1C
GS (Group separator, séparateur de groupe) 29 1D
RS (Record separator, séparateur d'enregistrement) 30 1E
US (Unit separator, séparateur d'enregistrement) 31 1F
SP (Space, espace) 32 20
! 33 21
" 34 22
# 35 23
$ 36 24
% 37 25
& 38 26
' 39 27
( 40 28
) 41 29
* 42 2A
+ 43 2B
, 44 2C
- 45 2D
. 46 2E
/ 47 2F
0 48 30
1 49 31
2 50 32
3 51 33
4 52 34
5 53 35
6 54 36
7 55 37
8 56 38
9 57 39
: 58 3A
; 59 3B
< 60 3C
= 61 3D
> 62 3E
? 63 3F
@ 64 40
A 65 41
B 66 42
C 67 43
D 68 44
E 69 45
F 70 46
G 71 47
H 72 48
I 73 49
J 74 4A
K 75 4B
L 76 4C
M 77 4D
N 78 4E
O 79 4F
P 80 50
Q 81 51
R 82 52
S 83 53
T 84 54
U 85 55
V 86 56
W 87 57
X 88 58
Y 89 59
Z 90 5A
[ 91 5B
\ 92 5C
] 93 5D
^ 94 5E
_ 95 5F
` 96 60
a 97 61
b 98 62
c 99 63
d 100 64
e 101 65
f 102 66
g 103 67
h 104 68
i 105 69
j 106 6A
k 107 6B
l 108 6C
m 109 6D
n 110 6E
o 111 6F
p 112 70
q 113 71
r 114 72
s 115 73
t 116 74
u 117 75
v 118 76
w 119 77
x 120 78
y 121 79
z 122 7A
{ 123 7B
| 124 7C
} 125 7D
~ 126 7E
Touche de suppression 127 7F

Table des caractères ASCII étendue

Le code ASCII a été mis au point pour la langue anglaise, il ne contient donc pas de caractères accentués, ni de caractères spécifiques à une langue. Pour coder ce type de caractère il faut recourir à un autre code. Le code ASCII a donc été étendu à 8 bits (un octet) pour pouvoir coder plus de caractères (on parle d'ailleurs de code ASCII étendu). Ce code attribue les valeurs 0 à 255 (donc codées sur 8 bits, soit 1 octet) aux lettres majuscules et minuscules, aux chiffres, aux marques de ponctuation et aux autres symboles (caractères accentués dans le cas du code iso-latin1).

Le code ASCII étendu n'est pas unique et dépend fortement de la plate-forme utilisée.

Les deux jeux de caractères ASCII étendus les plus couramment utilisés sont :
  • Le code ASCII étendu OEM, c'est-à-dire celui qui équipait les premières machines de type IBM PC.

    ASCII étendu OEM

  • Le code ASCII étendu ANSI, utilisé par les systèmes d'exploitation récents.

    ASCII étendu ANSI

    Le code EBCDIC

    Le code EBCDIC (Extended Binary-Coded Decimal Interchange Code), développé par IBM, permet de coder des caractères sur 8 bits. Bien que largement répandu sur les machines IBM, il n'a pas eu le succès qu'a connu le code ASCII.

    Unicode

    Le code Unicode est un système de codage des caractères sur 16 bits mis au point en 1991. Le système Unicode permet de représenter n'importe quel caractère par un code sur 16 bits, indépendamment de tout système d'exploitation ou langage de programmation.

    Il regroupe ainsi la quasi-totalité des alphabets existants (arabe, arménien, cyrillique, grec, hébreu, latin...) et est compatible avec le code ASCII. L'ensemble des codes Unicode est disponible sur le site www.unicode.org.

    Le codage Quoted-Printable

    Le codage Quoted-Printable (noté parfois QP) consiste à utiliser un codage US-ASCII sur 7 bits (texte non accentué) pour coder un texte utilisant un alphabet de caractères 8 bits (texte accentué), tel que l'alphabet français ISO-Latin-1.

    Principe de codage Quoted-Printable :

    Avec le codage Quoted-printable, les caractères standard, dont le code ASCII est compris entre 33 à 127 (à l'exception du caractère = possédant le code 61), sont codés en utilisant le code US-ASCII 7 bits.

    Seuls les caractères spéciaux ou accentués codés sur 8 bits (à, é, è, ç, etc.) sont codés à l'aide du caractère =, suivi du code hexadécimal sur deux caractères. Voici ci-dessous le codage quoted-printable pour des caractères accentués courants :

    Caractère Codage QP
    Espace _
    " =22
    # =23
    % =25
    & =26
    ( =28
    ) =29
    , =2C
    . =2E
    / /
    : =3A
    ; =3B
    < =3C
    = =3D
    > =3E
    ? =3F
    @ =40
    [ =5B
    \ =5C
    ] =5D
    ^ =5E
    ' =27
    { =7B
    | =7C
    } =7D
    ~ =7E

    Selon le codage Quoted-Printable, chaque ligne doit être découpé en segment d'une longueur maximale de 76 caractères.

    Le codage Base64

    Le principe du codage Base 64 consiste à utiliser des caractères US-ASCII (caractères non accentués) pour coder tout type de données codé sur 8 bits.

    Les protocoles de courrier électronique ont, en effet, été prévus à l'origine pour transporter des messages en texte seulement. Or, étant donné la diversité des systèmes de courrier électronique, l'échange de données binaires se traduit la plupart du temps par des transformations du contenu rendant illisible le document original.

    Le format Base64, utilisé massivement dans les échanges de courrier électronique, permet ainsi de transmettre n'importe quel document binaire (application, vidéo, fichier audio, etc.) en pièce jointe d'un courrier électronique en les codant à l'aide de caractères classiques.

    Le codage Base64 provoque une augmentation globale de 33% du volume des données à encoder.

    Principe de codage Base64 :

    Le principe du codage Base64 consiste à utiliser 4 caractères imprimables (au format US-ASCII) pour coder un groupe de 3 octets quelconques (3*8 bits = 24 bits).

    Le codage Base64 utilise un alphabet de 64 caractères imprimables classiques pour représenter une donnée de 6 bits. Les 64 symboles de cet alphabet son choisis pour être universellement lisibles et pour ne pas posséder de signification dans les principaux protocoles de messagerie (en particulier SMTP).
    ABCDEFGHIJKLMNOPQRSTUVWXYZ
    abcdefghijklmnopqrstuvwxyz
    123456789+/.
    

    En parcourant les données binaires de gauche à droite, des groupes de 24 bits sont créés en concaténant des blocs de 3 données de 8 bits. Chaque groupe de 24 bits est ensuite divisé en 4 groupes de 6 bits, correspondant à 4 caractères de l'alphabet Base64.

    L'encodage Base64 est prévu pour des données formant un multiple de 24 bits. Ainsi, si le volume des données à coder ne forment pas un multiple de 24 bits, le résultat du codage Base64 doit être complété par 0 à 3 caractères "=" afin d'obtenir un multiple de 24 bits. Ce 65e caractère ne peut ainsi être présent qu'à la fin des données encodées.

    Par ailleurs, afin de garantir une compatibilité avec l'ensemble des systèmes de messagerie, les données Base64 sont formatées avec des retours à la ligne afin que chaque ligne ne dépasse pas 76 caractères.

    Le codage Uuencode

    Le codage Uuencode (contraction de Unix-to-Unix encode) est un algorithme permettant de convertir des données binaires codées sur 8 bits en un format de codage sur 7 bits.

    Le codage Uuencode a été créé à l'origine pour permettre l'envoi de fichiers binaires grâce au protocole de courrier électronique uucp.

    En effet, le système uucp permettait de convertir les jeux de caractères utilisés entre les différents systèmes et ne permettait pas de distinguer le corps du message d'une pièce jointe. Ainsi, Uuencode a été prévu pour convertir les fichiers binaires dans un format texte compatible avec la messagerie et ne comportant pas de caractères risquant d'être convertis, ce qui rendrait illisible la pièce jointe.

    Le décodage consistant à retrouver un fichier binaire à partir d'un fichier Uuencodé est appelé Uudecode (en anglais Uudecoding).

    Format d'un fichier Uuencodé :

    Un fichier au format Uuencode commence par une ligne possédant le format suivant :

    begin mode nom_du_fichier

    Principe de l'encodage Uuencode :

    L'encodage Uuencode consiste à prendre des groupes de 3 octets (24 bits) et à les considérer comme 4 groupes de 6 bits, représentés par des valeurs comprises entre 0 et 63. S'il y a moins de 24 bits dans le flux entrant, Uuencode complète avec des 0.

    Uuencode ajoute 32 (valeur décimale) à chaque valeur, afin d'obtenir une valeur correspondant à un caractère ASCII imprimable.

    Les données sont représentées sur des lignes de 60 caractères. Ainsi chaque ligne permet d'encoder 45 octets du flux d'entrée car 4 octets des données de sortie représentent 3 octets de données d'entrée.

    Chaque ligne est précédée d'un caractère indiquant le nombre de caractères de la ligne.

    Enfin, une ligne contenant uniquement un espace, suivie d'une ligne contenant la chaîne de caractères end. L'espace précédant la ligne finale est parfois remplacé par le caractère ASCII 96 (accent grave), car certain logiciels de messagerie suppriment les lignes vides.

    Le codage BinHex

    Le codage BinHex (contraction de binary-to-hexadecimal) est un algorithme propriétaire de Apple permettant de convertir des données binaires codées sur 8 bits en un format de codage sur 7 bits. Le codage BinHex, prévu pour les systèmes Macintosh permet de conserver les attributs de fichier et intègre un système de contrôle d'erreur (CRC).

    Grâce au format BinHex, il est possible de transférer un fichier binaire (image, vidéo, fichier bureautique, application, etc.) d'un système à un autre, à travers un réseau informatique quelconque (notamment via un courrier électronique), sans risquer de le détériorer.

    Pour pouvoir être utilisé, le fichier devra toutefois être décodé préalablement.

    Format d'un fichier BinHex :

    Un fichier au format BinHex comporte généralement l'extension .HQX, mais il arrive qu'il ne comporte aucune extension. Un tel fichier comporte la première ligne suivante, lisible avec un logiciel de traitement de texte quelconque :

    (This file must be converted with BinHex 4.0) ou
    (This file must be converted with BinHex 5.0)


    [Retour en haut] / [Retour aux articles]