Schrift
[thread]10395[/thread]

CSV-Import mit Perl: fehlende Umlaute

Leser: 1


<< |< 1 2 >| >> 16 Einträge, 2 Seiten
abadiya
 2007-09-14 22:25
#99472 #99472
User since
2007-09-14
7 Artikel
BenutzerIn
[default_avatar]
Hallo,

ich möchte Daten aus einer Excel-Tabelle in eine HTML-Seite einfügen.
Sozusagen eine kleine Excel-Datenbank. Dazu habe ich die Excel-Datei
in eine csv-Datei umgewandelt und greife auf die Daten mit Mason/Perl
zu. Das klappt auch wunderbar.

Mein Problem ist nur dass die Umlaute und Anführungszeichen nicht
richtig dargestellt werden. Manchmal sind sie korrekt, manchmal
erscheinen an ihrer Stelle Fragezeichen (oder Rechtecke). Das ändert
sich bei fast jedem Refresh.

Selbst wenn ich UTF8 erzwinge...
<%method .utf8></%method>
... werden die Umlaute nicht korrekt angezeigt.

Weiß jemand Rat?

Vielen Dank und viele Grüße
ptk
 2007-09-14 23:17
#99474 #99474
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Wie liest du die CSV-Datei ein? Mit Text::CSV_XS?
abadiya
 2007-09-14 23:25
#99475 #99475
User since
2007-09-14
7 Artikel
BenutzerIn
[default_avatar]
Das ist der Code der die CSV einliest. Und da es Mason ist, ist das auch schon fast der gesamte Code der Seite.

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
% my $zeile;
% open TABELLE, "../test_excel.csv";

%$count=0

% while ( $zeile = <TABELLE> ){
%if ($count !=0);
%{
% my @spalten = split(/;/, $zeile);

<b><% $spalten[0] %></b>
<br><br>

<% $spalten[1] %>
<br><br>

<a href=" <% $spalten[2] %> ">Link1</a>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

<a href=" <% $spalten[3] %> ">Link2</a>
<br><br>
<br>
%}

%$count++;

% }

% close TABELLE;
ptk
 2007-09-15 00:24
#99477 #99477
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Du solltest spezifieren, in welchem Encoding die Datei vorliegt: binmode TABELLE, ":encoding(...)" oder binmode TABELLE, ":utf8".
abadiya
 2007-09-15 00:36
#99478 #99478
User since
2007-09-14
7 Artikel
BenutzerIn
[default_avatar]
Ah ok. Kommt das direkt nach dem Öffnen der Tabelle? Also:

% open TABELLE, "../test_excel.csv";
% binmode TABELLE, ":utf8";
% $count=0
ptk
 2007-09-15 00:44
#99479 #99479
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Ja. Oder gleichs ins open:
Code: (dl )
open TABELLE, "<:utf8", "datei"
abadiya
 2007-09-15 00:51
#99480 #99480
User since
2007-09-14
7 Artikel
BenutzerIn
[default_avatar]
Vielen Dank, werd ich gleich Montag ausprobieren. :)
abadiya
 2007-09-17 11:25
#99528 #99528
User since
2007-09-14
7 Artikel
BenutzerIn
[default_avatar]
Hallo nochmal,

ich habe jetzt sowohl die csv-Datei in utf8 gespeichert als auch den Binmode auf utf8 angepasst. Und tatsächlich: es funktioniert. Also vielen, vielen Dank. :)

Aber eine Anschlussfrage:
Ist UTF8 in allen Browsern als Default eingestellt? (Sobald ich im Browser einen anderen Schriftsatz einstelle ist jetzt nämlich Schluss mit Umlauten).
moritz
 2007-09-17 13:30
#99536 #99536
User since
2007-05-11
923 Artikel
HausmeisterIn
[Homepage]
user image
Findest du es nicht ein bisschen dreist, sowohl hier als auch in d.c.l.p.misc zu fragen, ohne das jeweils zu erwähnen? Und mich dann noch per Mail fragen?
Wenn ich so etwas sehe bereue ich meine Hilfsbereitschaft.

http://groups.google.com/group/de.comp.lang.perl.m...
GwenDragon
 2007-09-17 13:58
#99539 #99539
User since
2005-01-17
14607 Artikel
Admin1
[Homepage]
user image
abadiya+2007-09-17 09:25:51--

Aber eine Anschlussfrage:
Ist UTF8 in allen Browsern als Default eingestellt? (Sobald ich im Browser einen anderen Schriftsatz einstelle ist jetzt nämlich Schluss mit Umlauten).

Nein, wie sollte es.
DU musst schon Abfragen, was der Browser für Zeichensätze kennt.

Steht in der CGI-Umgebungsvariable HTTP_ACCEPT_CHARSET
Beispiel: iso-8859-1, utf-8, utf-16, *;q=0.1
<< |< 1 2 >| >> 16 Einträge, 2 Seiten



View all threads created 2007-09-14 22:25.