我正在使用osql來針對數據庫運行多個sql腳本,然後我需要查看結果文件以檢查是否發生任何錯誤。問題是Perl似乎不喜歡結果文件是Unicode的事實。如何用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格式,但我不知道。當我在文本板中打開文件時,它只是告訴我'Unicode'。
編輯:使用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.
輸出是什麼樣的?你能提供一個hex + ascii轉儲文件的開頭嗎? – 2010-03-17 11:20:43
輸出結果如下所示:■1> 2> M s g 1 5 1 5 1,L e v e l 6,S t a t e 1 – 2010-03-17 11:32:04
我會用什麼來提供文件開頭的十六進制+ ASCII轉儲? – 2010-03-17 11:32:52