Sie befinden sich hier im Forenarchiv von phpforum.de wenn Sie direkt ins Forum möchten, klicken Sie bitte hier. Zur Startseite kommen Sie hier.

fwrite und umlaute

Hallo,

ich habe in einem array text mit umlauten.
dieses array wird per fwrite in eine Datei test.xml geschrieben.
Lese ich diese Datei in einem editor oder webbrowser ein, sind die umlaute nur als sonderzeichen zu sehen.
Im Array sind die Umlaufe noch drin.
Nach dem fwrite sind die Umlaute nur noch als komische Zeichen zu sehen.

Die gleichen Daten werden in HTML Listboxen richtig dargestellt. Was macht fwrite anders ?

Ich habe das gefühl das das auch mit system einstellungen zu tun hat.

win2000 server apache2 php4.4.0

Hat jemand eine Idee?

mfg jadze

Hier gehts zum Orginal Eintrag "fwrite und umlaute" im Forum

Antworten

PHP führt selbst keinerlei automatische Zeichencodierungen durch.

Allerdings sind in XML Umlaute sowieso nicht erlaubt, wenn man nicht explizit die Kodierung in der XML-Datei angibt.

Dein Problem liegt also an ganz anderer Stelle.


2.

@oimel

Das mit dem XML ist ein Thema für sich.

Sagen wir mal die Datei heißt test.csv.

Trotzdem werden die Umlaute verbogen. Auf einem anderem System aber nicht.
Werde jetzt mal versuchen die Umlaute in den Daten mit str_replace zu ersetzen.

danke, jadze.


3.

Die Umlaute werden eben nicht verbogen. Die Kodierung des CSV ist eben nur eine andere, als für XML in dem Programm, das Du benutzt, standardmäßig vorgesehen ist.


4.

@oimel

Ich kann mir ja auch nicht vorstellen das da was verbogen wird.

Im Detail:

Die Daten kommen aus einer MS SQL Datenbank. Werden via html richtig angezeigt.
Als Export sollen die Daten als XML exportiert werden.
Klappt soweit auch. Nur werden die Umlaute nach dem Einlesen dieser Datei nicht richtig angezeigt.
Dabei ist es egal ob notepad IE oder ein anderes Programm benutze.
Das encoding in der XML Datei ändert auch nichts.

Gebe ich mir die Daten via debug vor dem schreiben und nach dem serialisieren aus, sind die Umlaute noch zu sehen.

Ich begreife noch nicht wo der dreher ist.

mfg jadze


5.

Beispiel:

<?xml version="1.0" encoding="ISO-8859-1" ?>
- <Prodis version="1.0">
- <Meldungen>
<Zeitstempel>15.08.2005 13:56:20</Zeitstempel>
<DBStatus>Verbindung erfolgreich</DBStatus>
- <Data>
<Bereich>Montagen2</Bereich>
<Unterbereich>KB</Unterbereich>
<Meldetext>E-St”rung</Meldetext>
<Meldezeit>15.08.2005 13:56:17</Meldezeit>
<Fehlerart>Stoerung</Fehlerart>
<Takt>-</Takt>
<Team>-</Team>
<Feld>-</Feld>
</Data>
</Meldungen>
</Prodis>


6.

Es muss da keinen Dreher geben: In XML stehen wahrscheinlich GENAU diesselben Daten wie im CSV, da das aber eben zwei unterschiedliche Dateiformate sind, sind die Daten in CSV richtig und in XML unzulässig oder falsch.


7.

Folgende code schnipzel

if( $result === true )
{
$xmldata = $serializer->getSerializedData();
}

$old = array ("ä" , "ö", "ü", "ß", "Ä", "Ö", "Ü");
$new = array ("ae" , "oe", "ue", "ss", "Ae","Oe","Ue");
str_replace($old, $new, $xmldata);

if ( !$fp = fopen($filename1, 'w') )
{
trigger_error ( 'Cannot open ');
}

str_replace scheint die umlaute nicht zu finden. Werden genauso angezeigt wie vorher.

Bleibt schwierig, jadze


8.

Na und in was für ner Codierung liegt das CSV überhaupt vor?


9.

Sorry, was ist mit Coding gemeint?

Dei Daten kommen aus einer Datenbankabfrage und werden so vom PEAR XML_Serializer serialisiert und per fwrite geschrieben.


10.

Das Ö von Störung wird mal als "Quadrat" und mal als "Gänsfuschen dargestellt".

Spielt der eingestellte Zeichensatz der Datenbank eine Rolle ?


11.

php code

----------
$db_status = "Verbindung erfolgreich ÄÖÜäöüß";
------------


print_r($arrayvariable);

ergibt:

Array
(
[Meldungen] => Array
(
[Zeitstempel] => 15.08.2005 14:21:02
[DBStatus] => Verbindung erfolgreich &#9472;Í&#9604;õ÷³&#9600;
[Data] =>
)

)

habe den Zusammenhang noch nicht begriffen :-(


Hier gehts zum Orginal Eintrag "fwrite und umlaute" im Forum
 
phpforum.de | Impressum