Wie kann ich eine Unicode-Datei mit Perl öffnen?

7

Ich verwende osql, um mehrere SQL-Skripte für eine Datenbank auszuführen, und dann muss ich in der Ergebnisdatei nachsehen, ob Fehler aufgetreten sind. Das Problem ist, dass Perl die Tatsache nicht zu mögen scheint, dass die Ergebnisdateien Unicode sind.

Ich habe ein kleines Testskript geschrieben, um es zu testen und die Ausgabe kommt durcheinander:

%Vor%

Irgendwelche Ideen? Ich habe versucht Decodierung mit decode_utf8 , aber es macht keinen Unterschied. Ich habe auch versucht, die Kodierung beim Öffnen der Datei zu setzen.

Ich denke, das Problem könnte sein, dass osql die Ergebnisdatei im UTF-16-Format ablegt, aber ich bin mir nicht sicher. Wenn ich die Datei im Textpad öffne, sagt sie mir einfach 'Unicode'.

Bearbeiten: Verwenden von Perl v5.8.8 Bearbeiten: Hex-Dump:

%Vor%     
Jaco Pretorius 17.03.2010, 11:18
quelle

4 Antworten

15

Die Datei befindet sich vermutlich in UCS2-LE (oder UTF-16 Format).

%Vor%

Wenn Sie eine solche Datei zum Lesen öffnen, müssen Sie die Codierung angeben:

%Vor%

Beachten Sie, dass das fffe am Anfang die Stückliste ist.

    
Sinan Ünür 17.03.2010, 12:21
quelle
7

Die Antwort finden Sie in der Dokumentation zu open , die Sie auch auf perlunintro . :)

%Vor%

Sie können eine Liste der Namen der Kodierungen erhalten, die Ihr perl unterstützt:

%Vor%

Danach müssen Sie herausfinden, wie die Datei codiert ist. Dies ist die gleiche Art und Weise, wie Sie eine Datei mit einer anderen Kodierung als der Voreinstellung öffnen würden, unabhängig davon, ob diese von Unicode definiert ist oder nicht.

Wir haben ein Kapitel in Effektive Perl-Programmierung , das durch die Details geht.

    
brian d foy 17.03.2010 14:24
quelle
4

Öffnen Sie die Datei mit einer angegebenen E / A-Schicht, z. :

%Vor%

Weitere Informationen hierzu finden Sie unter perldoc open .

    
Eugene Yarmash 17.03.2010 11:26
quelle
0
%Vor%     
Yordan Georgiev 29.04.2017 17:51
quelle

Tags und Links