J'ai un script Perl s'exécutant sous UNIX qui utilise DBI pour se connecter et récupérer des données à partir d'une base de données SQL Server. Le script se présente comme suit:Comment puis-je gérer les caractères non ASCII lors de la récupération de données à partir de SQL Server à l'aide de Perl?
$dbh = DBI->connect("dbi:Sybase:server=$connect;charset=UTF-8", $login, $password) or die("Couldn't connect to $connect as $login/$password:
$DBI::errstr");
$sql = "use mydb";
$sth = $dbh->prepare($sql);
$sth->execute or die("execute failed");
$sth->finish;
$sql = "MyProc \@DATE='1/1/2008'";
$sth = $dbh->prepare($sql);
$sth->execute or die("execute failed");
while (($body) = $sth->fetchrow()) {
print "$body\n";
}
$sth->finish;
$dbh->disconnect if $dbh;
La variable corps récupère les données à partir d'une colonne qui est NVARCHAR et contient des caractères non-ASCII. La requête fonctionne bien, mais l'instruction d'impression crache ????? quand il rencontre un caractère non-ASCII. Dans DBI-> connect je précise même le jeu de caractères, mais pas de chance.
Avez-vous des idées sur la façon dont je peux faire fonctionner cela?
Je suis un unix noob - pouvez-vous expliquer comment je peux confirmer que mon terminal est en UTF-8 et comment je peux le mettre à jour? – adeel825
votre environnement doit être défini (par exemple, setenv LANG en_US.UTF-8 si vous utilisez "csh") et votre logiciel de terminal doit être défini. Cela dépend du logiciel que vous utilisez. – Alnitak