Thread Probleme mit UTF-8 (7 answers)
Opened by thommyb at 2012-07-02 17:40

thommyb
 2012-07-02 17:40
#159520 #159520
User since
2012-07-02
2 Artikel
BenutzerIn
[default_avatar]
Perl und Arbeitsumgebung:
Ich arbeite mit Eclipse und EPIC und ActiveState Perl 5.12.3 unter Vista 64-bit.


Problem:
Ich kriege nach dem Einlesen einer Datei bei Umlauten und Akzenten nur Garbage. Die Datei wird aus stored procedures auf einem Sybase Server erstellt. Der output ist explizit als UTF-8 deklariert. Mein Editor (Notepad++) zeigt bei den Codierungen auch UTF korrekt an.

Das Problem muss wohl in Perl liegen, da scheine ich was falsch zu machen. Hier mein Code:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
use strict;
use locale;
use Encode;
use File::stat;
use File::Basename;
use File::Copy;
use File::Spec;

binmode(STDOUT, ":utf8");
$LogFile = "e:\\downloads\\Protokoll_2012-06-06.txt";
open(LOGFILE, "<:encoding(UTF-8)", $LogFile) or die("Could not open log file.");

foreach $line (<LOGFILE>)
{
#do things with every line / record
# beispielsweise:
# some code ......
print "Line: ".$lineno.": ".$line;

}
close(LOGFILE);


Und im Debugger sieht der Inhalt von $line so aus:

\x{FEFF}\x{FEFF}UPDATED;10;aktiv;2548254;1243286;Fahrlehrer-Berufsschule Zürich;Trockenloostrasse;91;8105;Regensdorf;0;;;;

Was die HEX Werte am Anfang jeder Zeile sollen, weiss ich nicht, aber immerhin scheint er den Umlaut im Wort Zürich korrekt zu interpretieren.

Ganz schlecht sieht aber der Output in der Console (Resultat von print()) aus:

Line: 13: UPDATED;10;aktiv;1306888;1243286;Fahrlehrer-Berufsschule Zürich;Trockenloostrasse;91;8105;Regensdorf;0;;;;

Dies obwohl ich binmode(STDOUT, ":utf8"); am Anfang des Programms definiert habe und doch der output von print auch in UTF-8 konvertiert werden sollte.

Kann mir bitte jemand erklären, was ich hier falsch mache???
Last edited: 2012-07-02 17:43:24 +0200 (CEST)

View full thread Probleme mit UTF-8