99 lines
4.4 KiB
Markdown
99 lines
4.4 KiB
Markdown
## **TD : Manipulation des encodages de caractères**
|
|
|
|
### **Objectifs** :
|
|
|
|
1. Comprendre comment les caractères sont encodés en utilisant différents systèmes d'encodage.
|
|
2. Savoir comment convertir entre différents encodages.
|
|
3. Être capable d'identifier l'encodage utilisé pour un texte donné.
|
|
|
|
### **Partie 1 : Découverte des encodages**
|
|
|
|
Pour cette partie, utilisez un éditeur de texte qui permet de choisir l'encodage lors de l'enregistrement d'un fichier (comme Notepad++).
|
|
|
|
1. Créez un nouveau fichier texte, et écrivez le mot "Bonjour" dedans.
|
|
2. Enregistrez le fichier en utilisant l'encodage ASCII. Qu'observez-vous ?
|
|
3. Réessayez en utilisant l'encodage ISO-8859-1. Qu'est-ce qui change ?
|
|
4. Enfin, enregistrez le fichier en utilisant l'encodage UTF-8.
|
|
|
|
### **Partie 2 : Conversion entre encodages**
|
|
|
|
Pour cette partie, utilisez un outil en ligne qui permet de convertir entre différents encodages, comme [cet outil](https://www.browserling.com/tools/text-to-binary).
|
|
|
|
1. Choisissez un mot ou une phrase en français qui utilise des caractères accentués (par exemple, "révolution").
|
|
2. Convertissez ce texte en binaire en utilisant l'encodage UTF-8. Notez le résultat.
|
|
3. Convertissez maintenant le même texte en binaire en utilisant l'encodage ISO-8859-1. Notez le résultat.
|
|
4. Comparez les deux résultats. Qu'observez-vous ?
|
|
|
|
### **Partie 3 : Identification de l'encodage**
|
|
|
|
Pour cette partie, utilisez un outil en ligne qui permet de deviner l'encodage d'un texte, comme [cet outil](https://dencode.com).
|
|
|
|
1. Choisissez trois textes différents, de préférence dans différentes langues.
|
|
2. Convertissez chaque texte en binaire en utilisant un encodage différent pour chaque texte.
|
|
3. Utilisez l'outil pour essayer de deviner quel encodage a été utilisé pour chaque texte. L'outil a-t-il raison ?
|
|
|
|
### **Partie 4 : Python**
|
|
|
|
1. Dans un interpréteur Python, exécutez successivement les instructions `chr(212)` et `chr(169)`. Qu'en déduisez-vous sur la spécification de la fonction `chr`?
|
|
|
|
```python
|
|
>>> chr(212)
|
|
'Ô'
|
|
>>> chr(169)
|
|
'©'
|
|
```
|
|
|
|
2. Dans un interpréteur Python, exécutez successivement les instructions `ord('©')` et `ord('à')`. Qu'en déduisez-vous sur la spécification de la fonction `ord`?
|
|
|
|
```python
|
|
>>> ord('©')
|
|
169
|
|
>>> ord('à')
|
|
224
|
|
```
|
|
|
|
3. Écrire une fonction `binaire_utf8`, qui prend en paramètre un point de code Unicode sous la forme d'un entier et renvoie la représentation binaire UTF-8 du caractère associé, sous la forme d'une liste d'octet (un octet est une liste de bits).
|
|
|
|
Conseil : Vous pouvez réutiliser les fonctions de conversion en binaire des précédentes séances ainsi que la méthode vue en cours.
|
|
|
|
```python
|
|
def binaire_utf8(code):
|
|
binaire_code = binaire(code)
|
|
if len(binaire_code) < 8:
|
|
return binaire_code
|
|
elif 8 <= binaire_code < 12:
|
|
return '110' + binaire_code[:5] + '10' + binaire_code[5:]
|
|
elif 12 <= binaire_code < 17:
|
|
return '1110' + binaire_code[:4] + '10' + binaire_code[4:10] + '10' + binaire_code[10:]
|
|
elif 17 <= binaire_code:
|
|
return '11110' + binaire_code[:3] + '10' + binaire_code[3:9] + '10' + binaire_code[9:15] + '10' + binaire_code[15:]
|
|
```
|
|
|
|
***Q4.*** Écrire une fonction `str_to_utf8`, qui prend en paramètre une chaine de caractère et renvoie la représentation binaire UTF-8, en hexadécimal, de l'ensemble des caractères de la chaine. Exécutez votre fonction sur la chaine `Rien ne sert de courir ; il faut partir à point. Le Lièvre et la Tortue en sont un témoignage.` Comparez le résultat obtenu avec celui de l'observation 12.
|
|
|
|
```python
|
|
def str_to_utf8(chaine):
|
|
l = []
|
|
for caractere in chaine:
|
|
l.append(hexadecimal(binaire_utf8(ord(caractere))))
|
|
return l
|
|
```
|
|
|
|
|
|
|
|
**Réflexion Finale** :
|
|
|
|
1. Pourquoi est-il important de connaître l'encodage utilisé pour un texte ?
|
|
2. Quels problèmes peut-on rencontrer si on utilise le mauvais encodage pour lire un texte ?
|
|
3. Comment l'UTF-8 a-t-il aidé à résoudre certains de ces problèmes ?
|
|
|
|
|
|
|
|
--------------
|
|
|
|
Auteurs : Florian Mathieu - Philippe Boddaert
|
|
|
|
Licence CC BY-SA
|
|
|
|
<a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/"><img alt="Licence Creative Commons" style="border-width:0" src="https://i.creativecommons.org/l/by-sa/4.0/88x31.png" /></a> <br />Ce cours est mis à disposition selon les termes de la <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">Licence Creative Commons Attribution - Partage dans les Mêmes Conditions 4.0 International</a>.
|