Ankündigung

Einklappen
Keine Ankündigung bisher.

Sonderzeichen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Gast-Avatar
    Ein Gast erstellte das Thema Sonderzeichen.

    Sonderzeichen

    Hallo zusammen!

    Ich hab ein Programm, dass Adressen verwaltet.
    Nun hab ich mir ca 2200 Adressen aus einem anderen Programm auf csv kopiert, damit ich nicht wieder alle eingeben muss.

    Das Problem ist jetzt aber, dass die importierten Daten, bei den Sonderzeichen (ä,ö,ü,ß) nicht korrekt dargestellt werden.
    Ich hab es also mit htmlentities() probiert. Als das aber nichts gebracht hat, hab ich mir die csv-Datei noch mal genauer angesehen, und festgestellt, dass die Daten schon in der csv-Datei falsch drin stehen.

    Beispiel:
    J³rgen --> Jürgen
    Blõtter --> Blätter
    europõisch --> europäisch

    Frage: Wie kann ich die Daten wieder korrekt darstellen?

    Vielen Dank im Vorraus für jede Antwort!

  • Gast-Avatar
    Ein Gast antwortete
    Zitat von seeker
    AHA

    header() ist also vorrangig, das ist natürlich was anderes (wußte ich ja nicht, inhaltlich sah das ja ziemlich gleich aus).
    Hast Du bei Google gesucht? Wohl nicht!

    Der Unterschied besteht nicht nur im Vorrang, zwar handhaben das die meisten Browser so, aber...


    Schau Dir doch einmal Den Quelltext der erzeugten Datei bei Verwendung von header() und einmal bei der Verwendung von <meta ...> an.

    1. <meta...>: Wie Du feststellen solltest, steht die Meta-Angabe nun - hoffentlich - im HTML-Header. Sie gehört nun zum Inhalt der Datei. => HTML-Header verändert!

    2. header(): Nun an den Anfang der PHP-Datei header() gesetzt und - oh Wunder - der Dateiinhalt bleibt, egal ob header()verwendet wird, gleich. => HTTP-Header gesetzt/geändert!

    Aber lassen wir es mal gut sein... :wink:

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    AHA

    header() ist also vorrangig, das ist natürlich was anderes (wußte ich ja nicht, inhaltlich sah das ja ziemlich gleich aus).

    Ich hab in der php.ini nachgesehen (auf meinem lokalen Test-Server)
    und da ist dieser Zeichensatz wohl Standard: ISO-8859-15.
    --> dh der richtige Zeichensatz wird bei mir immer verwendet (zumindest lokal), auch wenn ich keinen Zeichensatz angebe, oder?
    (mach ich zwar sowieso, weil ich nicht weiß wie das Ganze dann online ist, aber es wär interessant zu wissen)

    @karl-150
    das html mit
    Code:
    <!DOCTYPE HTML ...>
    <html>
      <head> 
    ...
    beginnen muss ist mir schon klar, ich hab es vorhin bei Post einfach weggelassen, um auf das Wesentliche zu zeigen, hat aber offensichtlich zu Verwechlungen geführt :wink:

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Es ist nicht das selbe. Browser haben da ihre Präferenzen. Und die liegen, soweit mir bekannt, auf dem http header; sprich: wenn der http header gesendet wird, dann kann meta/content nach Hause gehen.
    Und jetzt kann es sein, dass default_charset und default_mimetype in der php.ini gesetzt wurden. http://de2.php.net/manual/en/ini.php
    Daraus bastelt php dann immer, ohne weiteres Zutun durch den Skripter, den Content-type/charset header zusammen.

    Kann gesetzt sein, muss aber nicht. phpinfo() hilft da weiter.

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Zitat von seeker
    Wenn ich in meinem Programm bei der ersten Seite (die die index.php ist) ganz oben
    das hier mache, BEVOR ÜBERHAUPT IRGENDWAS AUSGEGEBEN WIRD ODER SONST WAS GEMACHT WIRD:
    Code:
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    Dann ist das invalides HTML... :wink:
    Code:
    <!DOCTYPE HTML ...>
    <html>
      <head>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
      </head>
    ...
    </html>
    Zitat von seeker
    Möglicherweise steh ich ja noch auf der Leitung, aber was soll da anders sein?
    Such doch einfach mal bei Google nach HTTP-Header und anschließend nach HTML.

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Also jetzt nochmal zum Mitschreiben...

    Wenn ich in meinem Programm bei der ersten Seite (die die index.php ist) ganz oben
    das hier mache, BEVOR ÜBERHAUPT IRGENDWAS AUSGEGEBEN WIRD ODER SONST WAS GEMACHT WIRD:
    Code:
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    dann ist das nicht dasselbe wie das:
    PHP-Code:
    <?
    header('Content-Type: text/html; charset=iso-8859-1');
    ?>
    Möglicherweise steh ich ja noch auf der Leitung, aber was soll da anders sein?

    Einen Kommentar schreiben:


  • Zergling-new
    antwortet
    Na weil die Zeichen dann schon falsch von PHP an den Browser gesendet worden sein könnten.
    Bringt ja bei JPG-Komprimierung auch nix ne verwaschene Datei dann doch nochma mit 0 Komprimierung abzuspeichern. Die Daten sind einfach schon vorher verloren gegangen.

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Hiermit wird der HTTP-Header gesetzt [, nach dem sich auch die meisten Browser richten]:
    Zitat von Bruchpilot
    Vor der ersten Ausgabe des Skripts
    Code:
    header('Content-Type: text/html; charset=iso-8859-1');
    einfügen.
    Und dies hier gehört in den - eher unbedeutenden - HTML-Header:
    Code:
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

    Einen Kommentar schreiben:


  • havok
    antwortet
    na da bin ich auch mal gespannt

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Ähm,... und wo ist da der Unterschied?

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Zitat von seeker
    Ist das nicht dasselbe?
    Nein!

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Danke für die Antworten!

    Ich hab doch das machen müssen, was ich eigentlich vermeiden wollte...
    Ich hab die ganzen Adressen nochmal exportiert (vom anderen Programm) und dabei diesmal genau darauf geachtet, dass die Daten korrekt sind (Sonderzeichen).
    Dann hab ich das ganze wieder für mein jetziges Programm umformatieren müssen (damit alles in die korrekten Felder kommt) und das ganze neu importiert.

    War zwar viel Arbeit, aber jetzt ist zumindest alles wieder so wie es sein soll.

    Das mit str_replace ging nicht, da auch manchmal Zeichen drin waren, die ja so gehören, und die wären dann alle weg gewesen, und einzeln mit Excel (suchen und ersetzen) wär auch zu aufwändig gewesen.

    Einen Kommentar schreiben:


  • havok
    antwortet
    was passiert denn wenn du deine csv DAtei mal in nem TExteditor öffnest, wie stehen die da dann drin?
    Wenn sie da nciht richtig stehen wird dir nix übrig bleiben als es zu ersetzen, oder nen andren Weg über Excel zu suchen.

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Ok, also wenn sie schon falsch in der csv-Datei sind, ist die einzige Möglichkeit, herauszufinden, wie die Sonderzeichen dargestellt werden, und diese dann zu ersetzen.

    Hab ich das richtig verstanden?
    Wenn ja, wär das doch einfacher, das gleich mit Excel zu machen, oder?
    -> ich dachte eigentlich, dass die csv-Datei irgendeinen anderen Zeichensatz verwendet, den man dann ändern kann... geht wohl nicht, oder?

    Einen Kommentar schreiben:


  • havok
    antwortet
    Hallo,

    doch das ist dasselbe. wenn die schon falsch in der csv datei drinstehehn, musst die sie mit str_replace ersetzen lassen.

    Gruß HaVoK

    Einen Kommentar schreiben:

Lädt...
X