Sto usando osql per eseguire diversi script sql su un database e quindi ho bisogno di guardare il file dei risultati per verificare se si sono verificati errori. Il problema è che Perl non sembra gradire il fatto che i file dei risultati siano Unicode.Come posso aprire un file Unicode con Perl?
ho scritto un piccolo script di test per provarlo e l'uscita viene fuori tutto gorgheggiava:
$file = shift;
open OUTPUT, $file or die "Can't open $file: $!\n";
while (<OUTPUT>) {
print $_;
if (/Invalid|invalid|Cannot|cannot/) {
push(@invalids, $file);
print "invalid file - $inputfile - schedule for retry\n";
last;
}
}
Tutte le idee? Ho provato la decodifica usando decode_utf8
ma non fa differenza. Ho anche provato a impostare la codifica quando si apre il file.
Penso che il problema potrebbe essere che osql inserisce il file risultato in formato UTF-16, ma non ne sono sicuro. Quando apro il file nel textpad mi dice semplicemente "Unicode".
Edit: Usando Perl v5.8.8 Edit: Hex discarica:
file name: Admin_CI.User.sql.results
mime type:
0000-0010: ff fe 31 00-3e 00 20 00-32 00 3e 00-20 00 4d 00 ..1.>... 2.>...M.
0000-0020: 73 00 67 00-20 00 31 00-35 00 30 00-30 00 37 00 s.g...1. 5.0.0.7.
0000-0030: 2c 00 20 00-4c 00 65 00-76 00 65 00-6c 00 20 00 ,...L.e. v.e.l...
0000-0032: 31 00 1.
Che aspetto ha l'output? Potete fornire un hex + dump ascii all'inizio del file? –
L'output è simile al seguente: ■ 1> 2> M s g 1 5 1 5 1, L e v e l 1 6, S t a t e 1 –
Cosa utilizzerei per fornire un dump hex + ascii all'inizio del file? –