Language and Character Set File Scanner (LCSSCAN)

L’article intitulé « Migrer le characterset de la base avec CSSCAN et CSALTER » donne une démonstration sur une migration d’encodage.
Dans le même registre, il existe un utilitaire peu utilisé et peu connu mais qui peut être d’une grande aide pour la définition d’un characterset.
Vous me direz que ce paramètre est principalement positionné en unicode ou bien que c’est l’éditeur de l’application qui fournit cette information. Certes, mais il existe de nombreux cas où il faut déterminer un characterset bien spécifique car les données proviennent d’un pays dont l’unicode ne recense pas les caractères spécifiques.
Comment alors reconnaître le bon characterset ? L’utilitaire LCSSCAN nous donne cette réponse.

Il suffit de lui fournir en entrée :

  • un fichier
  • le format du fichier (TEXTE ou HTML)
  • le nombre de résultats possibles

Ce dernier paramètre donne les characterset possibles correspondant au contenu du fichier. Par exemple, si vous indiquez la valeur 2 à ce paramètre, vous obtiendrez 2 characterset en résultat. Le premier résultat est le plus probable.
Voici quelques exemples d’utilisation :
1. Fichier contenant des caractères spéciaux français (é,è,ê…) :

$ lcsscan RESULTS=2 FORMAT=TEXT FILE=fichier_french.txt
 Language and Character Set File Scanner v2.1
 (c) Copyright 2003, 2004 Oracle Corporation.  All rights reserved.
fichier_french.txt:     FRENCH  WE8ISO8859P1;   ITALIAN  WE8ISO8859P1;
$

2. Fichier contenant des caractères allemands (ö,ß,ä…)

$ lcsscan RESULTS=2 FORMAT=TEXT FILE=fichier_german.txt
 Language and Character Set File Scanner v2.1
 (c) Copyright 2003, 2004 Oracle Corporation.  All rights reserved.
fichier_german.txt:     GERMAN  WE8MSWIN1252;   DUTCH  WE8MSWIN1252;
$

C’est surprenant de voir à quel point cet utilitaire est efficace et précis dans ses résultats.
Allez, un dernier test avec des caractères japonais (と,る,の,で,す,が…)、

$ lcsscan FORMAT=HTML FILE=html_japanese.htm
 Language and Character Set File Scanner v2.1
 (c) Copyright 2003, 2004 Oracle Corporation.  All rights reserved.
html_japanese.htm:      JAPANESE  UTF8;
$

Ce qui est intéressant aussi avec cet utilitaire, c’est qu’il nous offre la possibilité d’analyser une partie du fichier. Pour cela il faut préciser le début et la fin du scan.
Par exemple, soit en entrée un fichier contenant une partie en français, une deuxième partie en espagnol et la dernière partie en allemand. Le scan doit démarrer à partir du 111ème octet jusqu’au 120ème.

$ lcsscan FORMAT=TEXT FILE=fichier_multi_language.txt BEGIN=111 END=120
 Language and Character Set File Scanner v2.1
 (c) Copyright 2003, 2004 Oracle Corporation.  All rights reserved.
fichier_multi_language.txt:     SPANISH  WE8MSWIN1252;
$

D’autres combinaisons sont possibles comme un scan du début jusqu’au Nième octet ou du Nième octet jusqu’à la fin. Par défaut, si on ne précise pas ses paramètres, tout le fichier est scanné.

$ lcsscan FORMAT=TEXT FILE=fichier_multi_language.txt END=221
 Language and Character Set File Scanner v2.1
 (c) Copyright 2003, 2004 Oracle Corporation.  All rights reserved.
fichier_multi_language.txt:     FRENCH  WE8ISO8859P1;
$

Et pour plus d’info :
« http://docs.oracle.com/cd/E11882_01/server.112/e10729/ch12scanner.htm#i1006023 »