Comment puis-je suppose que l'encodage d'une chaîne de caractères en Perl?

J'ai une chaîne Unicode et ne sais pas ce que son encodage. Lorsque cette chaîne est lu par un programme Perl, est-il un codage par défaut Perl utilisera? Si oui, comment puis-je savoir ce que c'est?

Je suis en train d'essayer de se débarrasser de caractères non-ASCII à partir de l'entrée. J'ai trouvé ceci sur certains forum qui va le faire:

my $line = encode('ascii', normalize('KD', $myutf), sub {$_[0] = ''});

Comment le travail ci-dessus lorsque aucun encodage en entrée est-elle précisée? Faut-il préciser comme suit?

my $line = encode('ascii', normalize('KD', decode($myutf, 'input-encoding'), sub {$_[0] = ''});
  • Corrigez-moi si je me trompe, mais j'ai pensé que le point de l'ensemble de l'Unicode, c'est qu'il n'a pas un "codage" - tout est là.
  • Vous n'avez pas une chaîne Unicode. Vous avez un dossier complet d'octets qui représentent une chaîne Unicode dans certains encodage. Si vous ne connaissez pas l'encodage du fichier, puis vérifiez pour un ordre d'octet-marqueur au début du fichier. Si il n'existe pas de NOMENCLATURE, vous êtes hors de la chance.
  • On dirait que vous êtes de poser au moins deux questions séparées (1er et 2e alinéas).
  • Unicode définit un jeu de caractères. Un encodage du jeu de caractères représente sur le disque. Par exemple, UTF-8 est un encodage.
InformationsquelleAutor Maulin | 2009-12-28