Antworten auf deine Fragen:
Neues Thema erstellen

auslesen einer textdatei und das eurozeichen (?)

sh0ck

PST-SURVIVOR

hallo community :)

schier unglaublich, doch solch' einfache dinge, wie im titel beschrieben, können einen wirklich in den wahnsinn treiben! ich versuche nun schon seit stunden das auslesen einer *.txt fehlerfrei hinzubekommen, doch vergeblich wenn ich das ?-zeichen berücksichtigen möchte.

gegeben ist folgendes:

(1) textdatei geschrieben in phase5 wie folgt (auszug)
Code:
...
Cuba Vodka--2 cl--2,00 ?
Cuba Caramel--2 cl--2,00 ?
Cuba Lime & Lemon--2 cl--2,00 ?
Cuba Strawberry--2 cl--2,00 ?
Cuba pur--2 cl--2,00 ?
...

(2) php-datei
Code:
<?php
         $txt = array("heissgetraenke", "alkoholfreie-getraenke", "bier", "wein", "spirituosen");

         foreach($txt as $file) {
                 echo "\t<div id=\"fo-".$file."\">&nbsp;</div>\n";
                 $fp = fopen("txt/".$file.".txt","r");

                 if($fp) {
                         echo "\t\t<table>\n";
                         while(!feof($fp)) {
                                 $list = fgets($fp);
                                 $entries = count(explode("--",$list));
                                 echo "\t\t\t<tr>";

                                 for($i=0; $i<$entries; $i++) {
                                         $entry = explode("--",$list);
                                         if($i < 1) { $css = "lf"; }
                                         if($i > 0) { $css = "rd"; }
                                         echo "<td class=\"".$css."\">".$entry[$i]."</td>";
                                 }

                                 echo "</tr>\n";
                         }
                         echo "\t\t</table>\n\n";
                         fclose($fp);
                 }
         }
?>

(3) header
Code:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

das auslesen an sich ist stellt kein problem dar, doch mag er mir das eurozeichen nicht konvertieren. an was könnte das liegen - hilfeeeeeeee!
natürlich könnte ich in der textdatei statt dem (?) die "named entity" (&euro) oder die unicode-notation (€) angeben, aber dies ist ja nicht sinn der sache, oder? ausserdem soll die datei später durch einen anderen nutzer anpassbar sein, d.h. er soll wie gewohnt einfach ein eurozeichen eintragen können.

ich hab' schon sämtliche varrianten ausprobiert wie zum beispiel das ändern des charset bei content-type in ISO-8859-15 oder UTF-8, ich habe sogar die standard-zeichenkodierung im firefox geändert, denn ich wollte nichts unversucht lassen, doch nun bin ich mit meinem latein am ende bzw. bringt mich utf8 ans ende ;)

gruss chris
 

Duddle

Posting-Frequenz: 14µHz

AW: auslesen einer textdatei und das eurozeichen (?)

Bei mir funktioniert es. Wenn ich die meta-Zeile nicht einbaue, nimmt Firefox ISO-8859-1 an; mit der Zeile geht er auf Unicode/UTF-8 und zeigt das € richtig an.

Alternativ kannst du auch sowas machen:
PHP:
//dein code
				$ausgabe = $entry[$i];
				$ausgabe = str_replace("\xE2\x82\xAC", "&euro;", $ausgabe);
				echo "<td class=\"".$css."\">".$ausgabe."</td>";
//dein code
aber da weiss ich nicht, wie es in anderen Situationen reagiert.


Duddle
 

sh0ck

PST-SURVIVOR

AW: auslesen einer textdatei und das eurozeichen (?)

hallo :)

@Duddle
danke das du dir mein problem zu herzen genommen hast. doch leider zeigt dein workaround bei mir kein befriedigendes ergebnis, d.h. die ausgabe bleibt unverändert. bin wirklich ratlos, an was das liegen könnte, somal mein script bei dir ja zu funktionieren scheint. kann es an der textdatei selbst liegen, aber eher unwahrscheinlich, da ja die konvertierung der inportierten datensätze über den header bestimmt wird. hinzuzufügen ist das es sich bei dem doctype um xhtml transitional handelt, in die der php-code inkludiert wird.

HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
<head>
         <title>bla bla bla</title>

         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>

vielleicht hat ja noch jemand eine idee, denn ich hab' absolut keine mehr! :hmpf:

gruss chris
 

saila

Moderatorle

AW: auslesen einer textdatei und das eurozeichen (?)

Hi,

also ich habe mal die zwei Dateien übernommen und getestet. Es läuft ohne Probleme! Sprich das EUR-Zeichen wird korrekt ausgegeben. Hier die zwei Testfiles:

PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
<head>
         <title>bla bla bla</title>

         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<?php
         $txt = array('text');

         foreach($txt as $file) {
                 echo "\t<div id=\"fo-".$file."\">&nbsp;</div>\n";
                 $fp = fopen("$file.txt","r");
                 

                 if($fp) {
                         echo "\t\t<table>\n";
                         while(!feof($fp)) {
                                 $list = fgets($fp);
                                 $entries = count(explode("--",$list));
                                 echo "\t\t\t<tr>";

                                 for($i=0; $i<$entries; $i++) {
                                         $entry = explode("--",$list);
                                         if($i < 1) { $css = "lf"; }
                                         if($i > 0) { $css = "rd"; }
                                         
                                         echo "<td class=\"".$css."\">".$entry[$i]."</td>";
                                 }

                                 echo "</tr>\n";
                         }
                         echo "\t\t</table>\n\n";
                         fclose($fp);
                 }
         }
?>
</body>
</html>
Bis auf path und Array-Anpassung wurde nichts geändert!
Die Textdaten entsprechen deiner Textdaten aus deinem ersten Beitrag.
 

sh0ck

PST-SURVIVOR

AW: auslesen einer textdatei und das eurozeichen (?)

komisch, wenn es bei euch funktioniertworan kann es dann liegen?!
meine darstellung sieht wie folgt aus:


könnte es an einer einstellung des lokalen webservers liegen? benutze XAMPP.

edit: es ist mir auch aufgefallen, dass keine umlaute dargestllt werden, erst, wenn ich den string mit htmlentities() ausgebe.

gruss chris
 
Zuletzt bearbeitet:

saila

Moderatorle

AW: auslesen einer textdatei und das eurozeichen (?)

Nehm doch mal mein Script (was ja von dir ist) und passe lediglich den path und das array an.

Falls dann immer noch das gleiche Problem vorliegt, kannst du prüfen, welche Sprache für Xampp eingestellt ist. Das findest du am einfachsten heraus, indem du einen Fehler einbaust und am Scriptanfang folgende Zeile zuvor einbindest:
PHP:
<?php
error_reporting(E_ALL);

/*
 * am Ende der Datei kansnt du noch die Server-Einstellungen dir ansehen per
*/
echo phpinfo();
?>
Dann ist zumindest ersichtlich, welche Sprache eingestellt ist.
Desweiteren kannst du über die Datei "AddDefaultCharset" erkennen, welcher Charset als default eingestellt ist.
 

sh0ck

PST-SURVIVOR

AW: auslesen einer textdatei und das eurozeichen (?)

wenn ich das script eins zu eins kopiere und die anpassungen vornehme wird mir ebenfalls bei der ausgabe kein eurozeichen angezeigt. wieso sollte es auch, hat sich ja nichts geändert, ausser das sämtlicher firlefanz weggelassen wurde. :)

mit error_reporting(E_ALL); kann ich nichts erkennen, lediglich die normalen fehlermeldungen die es mir auch sonst ausgibt, wenn einer vorhanden ist. in diesem fall habe ich einfach einen buchstaben bei der internen varriable der foreach-schleife geändert, um absichtlich einen fehler einzubauen
Code:
Notice: Undefined variable: file in D:\Programme\XAMPP\htdocs\Projekte\www.##.de\test.php on line 14
 

Notice: Undefined variable: file in D:\Programme\XAMPP\htdocs\Projekte\www.##.de\test.php on line 15

Warning: fopen(txt/food/.txt) [function.fopen]: failed to open stream: No such file or directory in D:\Programme\XAMPP\htdocs\Projekte\www.##.de\test.php on line 15

phpinfo() gibt folgendes heraus:
Code:
bei Configuration PHP Core: default_charset no value (lokal und master)
bei Apache Environment: HTTP_ACCEPT_CHARSET UTF-8,*
bei HTTP Headers Information: Accept-Charset 	UTF-8,*
bei PHP Variables: _SERVER["HTTP_ACCEPT_CHARSET"] UTF-8,*
mehr einträge mit dem schlüsselwort "charset" konnte ich nicht finden. AddDefaultCharset? wo muss ich denn da nachsehen, finde das nicht.

gruss chris
 

sh0ck

PST-SURVIVOR

AW: auslesen einer textdatei und das eurozeichen (?)

ok! ich habe den fehler gefunden, nur weiß ich nicht wie ich ihn beheben kann. es liegt definitiv an meinem lokalen webserver! ich habe zur kontrolle eine normale html-datei erstellt und diese nicht über apache laufen lassen, sondern normal mit dem browser geöffnet.

statt also file:///D:/Projekte/PSD-Tutorials/test.html und siehe da, das eurozeichen wird angezeigt.

weiß jemand wo ich die zeichenkodierung unter xampp einstellen kann/muss? habe schon probiert in der php.ini dem default_charset, welches nur mit einem semikolon als kommentar hinterlegt war, den wert iso-8859-15 zu geben, doch geändert hat sich nichts.
 

saila

Moderatorle

AW: auslesen einer textdatei und das eurozeichen (?)

was du vll noch mal ausprobieren kannst ist diese funktion hier: PHP: iconv - Manual

Kann er, behebt allerdings nicht sein eigentl. Problem!

@sh0ck,

bevor du an die Einstellungen von php gehst, teste noch folgendes. Ändere die EURO-Zeichen in & e u r o ; (ohne Leerstellen) und lass dier das noch mal ausgeben. Evtl. ist dann schon das Problem behoben.

Es könnte auch daran liegen, wie deine Browsereinstellung aussieht. Also das gewählte Zeichenkodierung.
 

sh0ck

PST-SURVIVOR

AW: auslesen einer textdatei und das eurozeichen (?)

hi.

komm' leider auf keinen grünen zweig. habe zwar einmal probiert das html-entity $ e u r o ; mir ausgeben zu lassen, aber auch ohne erfolg. gewollt ist dies sowieso nicht, da der anwender die datei später selbst bearbeiten soll und dem möchte ich nicht abverlangen alle sonderzeichen zu kodieren.


ich habe jetzt die textdatei mit dem windows editor geöffnet und erneut abgespeichert. stellte dabei fest, dass die kodierung ANSI war und habe die datei auf utf-8 gestellt, ohne erfolg.


ganz schön stressig!
gruss chris
 

saila

Moderatorle

AW: auslesen einer textdatei und das eurozeichen (?)

Grundlegend liegt es bei der Programmierung, Sonderzeichen in die entsprechenden Zeichensätze umzuwandeln. Hat also nichts mir Änderungen die der Kunde vornehmen muss.
Ich bin kurz davon zu wettern, dass du irgendwo einen Fehler hast. Habe nur keine Zeit um das zu prüfen :(
 

sh0ck

PST-SURVIVOR

AW: auslesen einer textdatei und das eurozeichen (?)

Grundlegend liegt es bei der Programmierung, Sonderzeichen in die entsprechenden Zeichensätze umzuwandeln.
du scheinst recht zu haben. ich bin etwas weiter gekommen :)

PHP:
htmlentities($entry[$i])
//gibt mir umlaute (Ää, Üü, Öö) allerdings kein "ß" (scharfes s bzw. sz) und kein eurozeichen (€) aus.

PHP:
htmlentities($entry[$i], ENT_QUOTES, "utf-8")
htmlentities($entry[$i], ENT_QUOTES, "ISO-8859-15")
//gibt mir umlaute und sonderzeichen als nicht definierbare zeichen aus.

PHP:
htmlentities($entry[$i], ENT_QUOTES, "cp1252")
//interessanterweise gibt mir der cp1252 zeichensatz (windows spezifischer zeichensatz für westeuropäische sprachen) das eurozeichen (€) und umlaute sichtbar aus, allerdings nicht das (ß)

es ist zum verrückt werden.
gruss chris
 
Zuletzt bearbeitet:

sh0ck

PST-SURVIVOR

AW: auslesen einer textdatei und das eurozeichen (?)

hallo nochmal.

ich hab' die LÖSUNG :lol:
es war nur ein kleines verständnisproblem, was das zusammenspiel von php und der textdatei betrifft.

ich habe die textdatei im windows editor geöffnet und mit der zeichenkodierung UTF-8 gespeichert. da ich die datei vorher mit phase5 erstellt hatte, war dies nicht der fall. eingelesen wird der string mit:
PHP:
htmlentities($string, ENT_QUOTES, "utf-8")

ergebnis:


hatte zwar vorher schon mit htmlentities in diesem script gearbeitet, aber da die textdatei den falschen zeichensatz hatte, lief das nicht korrekt. nun gut, jetzt läuft alles fehlerfrei. ich dank' dir @saila dein sätzchen hat mir dann doch den nötigen denkanstoss gegeben. ich danke natürlich auch den anderen, die sich damit befasst haben. :)

gruss chris
 
Zuletzt bearbeitet:
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.565
Beiträge
1.538.067
Mitglieder
67.488
Neuestes Mitglied
Andrew56524
Oben