Petit memo et info puisque j'ai été confronté à la situation : J'avais besoin de créer une table contenant l'ensemble des caractères accentués avec leur équivalent ASCII pour pouvoir ré encoder des fichiers provenant d'un site ne gérant pas l'UTF8.

Et c'est là que les soucis ont commencé, puisque visiblement les hashtables sont insensibles à la casse et ne peuvent avoir que des clés uniques. Ainsi, ceci ne marche pas :

> $characterchange = @{
"â"='â'
"Â"='Â'
}
ParserError: 
Line |
   3 |  "Â"='Ã'
     |  ~~~
'\x0a} Duplicate keys 'Â' are not allowed in hash literals.

En effet, il ne prend pas le â et le  comme deux caractères différents !

Après quelques recherches, il s'avère qu'il faut utiliser l'objet Hashtable en lieu et place du @{} usuel.

>$characterchange = New-Object hashtable
>$characterchange.Add("â",'â')
>$characterchange.Add("Â",'Â')
>$characterchange

Name                           Value
----                           -----
â                              â
                              Ã

Ajouter un commentaire

Article précédent Article suivant