Я использую osql для запуска нескольких сценариев sql для базы данных, а затем мне нужно просмотреть файл результатов, чтобы проверить, не произошло ли каких-либо ошибок. Проблема в том, что Perl не нравится тот факт, что файлы результатов имеют Unicode.
Я написал небольшой тестовый скрипт, чтобы проверить его, и вывод получился искаженным:
$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;
}
}
Есть идеи? Я пытался декодировать, используя decode_utf8
, но это не имеет значения. Я также пытался установить кодировку при открытии файла.
Я думаю, что проблема может заключаться в том, что osql помещает файл результатов в формат UTF-16, но я не уверен. Когда я открываю файл в textpad, он просто говорит мне «Юникод».
Редактировать: Использование Perl v5.8.8
Изменить: шестнадцатеричный дамп:
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.