L3 - Génie Logiciel – Manipulation des locales

Programming, Math, etc. · lab

Voir tous les documents en génie logiciel

L3 - Génie Logiciel – Manipulation des locales

Manipulation de locales (régionalisation)

Vous allez étudier dans ce TP les fonctions associées à la locale (culture) de l’utilisateur

connecté, à travers plusieurs outils et langages.

Interpréteur de commande

Visualisation de la locale en cours d’utilisation :

$ locale

Locales actuellement disponibles sur le système :

$ locale -a

Changement de la locale de la session courante :

$ LC_ALL=de_DE.utf8

$ date

Mo 15. Okt 15:34:11 CEST 2012

$ date

Mon Oct 15 15:33:24 CEST 2012

Programme C++

Créez un programme en C++, sous Eclipse CDT ou en ligne de commande. Votre programme

est idéalement en C++11 (sous Eclipse, clic droit sur le projet type Managed C++ Build, puis

C/C++ Build > Settings > Dialect > Language standard > ISO C++ 11).

Il doit contenir le code de démarrage suivant :

#include <iostream>

Publicité

int main(int argc, char **argv)

{

return 0 ;

}

Avec le débogueur ou avec la console, testez la représentation des chaînes avec char[],

std::string et std::wstring. Il est recommandé de compiler en C++11 votre programme.

Changez la locale courante avec setlocale(LC_ALL, « locale ») en début de programme. Les

locales supportées sont celles dans /etc/locale.gen.

Affichez une date avec la locale courante, et avec la locale de_DE (comme la question plus

haut). Examinez la représentation des caractères Unicode.

Page web

Créez une page .html affichant :

  • La date du jour dans la culture de l’utilisateur connecté
  • Dans une autre culture, par exemple en_US

[email protected] - 2019

Prenez soin spécifier l’encodage en tête de fichier.

Spécifiez un encodage pour votre page (le but ici n’est pas d’étudier l’encodage, mais juste de

correctement le spécifier pour ne pas avoir de problème) :

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

Ecrivez maintenant un programme Javascript pour afficher une date de manière localisée :

<script type="text/javascript">

var d = new Date(Date.UTC(2019, 03, 26, 3, 0, 0));

Publicité

document.write(d.toLocaleDateString());

</script>

Recherchez d’autres fonctions de localisation, sur les nombres par exemple.

Programme Java

Créez un programme Java sous Eclipse permettant d’afficher une date en utilisant la locale de

l’utilisateur courant.

Locale loc = Locale.getLocale(); // locale courante

DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, loc);

String formattedDate = df.format(yourDate);

Vérifiez que la locale est bien celle correspondant à la valeur lue depuis un shell.

Essayez avec d’autres locales.

Programme PHP

Ouvrez un shell et tapez

$ php -S localhost:8000

Cela sert le répertoire courant dans un petit serveur Web.

Depuis un autre shell, éditer un fichier « test.php » contenant des instructions manipulant des

chaînes de caractères. Veillez à ce que ces chaînes soient correctement encodées, en utilisant les

bonnes API. Par exemple, pour afficher une variable :

<script>

var myvar = <?php echo json_encode($myVarValue); ?>;

window.alert(myvar);

Publicité

</script>

Faites la même chose pour encoder du contenu HTML textuel, dans un élément (innerHTML),

et dans un attribut d’élément. Choisissez un contenu comportant des caractères Unicode :

$unicodeChar = "\u{1000}";

Ou bien encodez vous-même la chaîne en UTF-8 par exemple, comme suit :

<?php

header('content-type:text/html;charset=utf8');

?>

<html>

<head>

</head>

<body>

[email protected] - 2019

<?php

echo("\xE3\x82\xA2"); // affiche un caractère oriental

?>

</body>

</html>

Vous pouvez également ajouter un tag meta à votre page et voir quel encodage votre

navigateur choisi ; celui du code HTML, ou bien celui des headers (ce qui doit normalement

être le cas).

Publicité

Enfin, initialisez la locale de PHP avec la locale correspondant au navigateur client. Le

navigateur client envoie sa locale dans sa requête HTTP. Pour visualiser la totalité des headers

envoyés depuis votre navigateur, aller sur :

https://manytools.org/http-html-text/http-request-headers/

Vous pouvez tester votre programme avec les caractères Unicode suivant :

Caractère Unicode U+1F309 : \U0001F309

UTF-16 : \ud83c\udf09

Visuel :

UTF-32 : \U0002008A

Ecriture en C :

wchar_t s[] = « \U0002008A » ;

Ecriture en C++ :

std::string = u8« \U0002008A » ;

Ecriture en Java :

<utiliser la représentation UTF-16 avec 2 mots>

Notons que sous Linux, ‘s’ (ci-dessus) est ici parfaitement traité. Il s’agit ici d’1 seul mot 32

bits UTF-32 qui représente le caractère U+2008A (le caractère « Han »).

[email protected] - 2019

Recherchez d’autres fonctions de localisation, sur les nombres par exemple. Programme Java Créez un programme Java sous Eclipse permettant d’afficher une date en utilisant la locale de l’utilisateur courant. Locale loc = Locale.getLocale(); // locale courante DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, loc); String formattedDate = df.format(yourDate); Vérifiez que la locale est bien celle correspondant à la valeur lue depuis un shell. Essayez avec d’autres locales. Programme PHP Ouvrez un shell et tapez $ php -S localhost:8000 Cela sert le répertoire courant dans un petit serveur Web. Depuis un autre shell, éditer un fichier « test.php » contenant des instructions manipulant des chaînes de caractères. Veillez à ce que ces chaînes soient correctement encodées, en utilisant les bonnes API. Par exemple, pour afficher une variable : Faites la même chose pour encoder du contenu HTML textuel, dans un élément (innerHTML), et dans un attribut d’élément. Choisissez un contenu comportant des caractères Unicode : $unicodeChar = \"\\u{1000}\"; Ou bien encodez vous-même la chaîne en UTF-8 par exemple, comme suit : [email protected] - 2019 Vous pouvez également ajouter un tag meta à votre page et voir quel encodage votre navigateur choisi ; celui du code HTML, ou bien celui des headers (ce qui doit normalement être le cas). Enfin, initialisez la locale de PHP avec la locale correspondant au navigateur client. Le navigateur client envoie sa locale dans sa requête HTTP. Pour visualiser la totalité des headers envoyés depuis votre navigateur, aller sur : https://manytools.org/http-html-text/http-request-headers/ Vous pouvez tester votre programme avec les caractères Unicode suivant : Caractère Unicode U+1F309 : \\U0001F309 UTF-16 : \\ud83c\\udf09 Visuel : UTF-32 : \\U0002008A Ecriture en C : wchar_t s[] = « \\U0002008A » ; Ecriture en C++ : std::string = u8« \\U0002008A » ; Ecriture en Java : Notons que sous Linux, ‘s’ (ci-dessus) est ici parfaitement traité. Il s’agit ici d’1 seul mot 32 bits UTF-32 qui représente le caractère U+2008A (le caractère « Han »). [email protected] - 2019","datePublished":"2019-12-17","keywords":"locale, programme, quot, caracte, date, html, votre, locales, 2019, chai","inLanguage":"fr","url":"https://www.universitylib.com/fr/documents/l3-genie-logiciel-manipulation-des-locales-d5abfe79d5","isPartOf":{"@type":"WebSite","name":"UniversityLib","url":"https://www.universitylib.com/"}}