kostenloser Webspace werbefrei: lima-city


Wie den Charset / die Codierung herausfinden?

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    tengames

    tengames hat kostenlosen Webspace.

    Hallo

    wenn ich den header Content-Type auf ISO-8859-1 setze
    dann kommt mit mb_detect_encoding() trotzdem UTF-8
    warum?

    <?php 
    header('Content-type: text/html; charset=ISO-8859-1');
    
    $ausgabe[0] = "ich bin ein hübscher Text"; 
    $ausgabe[1] = "Auch mit Umlauten die schön sind";
    $ausgabe[2] = "Ich bin nicht utf8-codiert"; 
    
    $encoding = mb_detect_encoding($ausgabe[0]);
    
    echo $encoding; // ---- Ausgabe ist: UTF-8
    ?>


    wie bekomme ich an die "richtige" Codierung / den korrekten charset ???
    Danke!

    Beitrag zuletzt geändert: 26.9.2011 12:03:30 von tengames
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. t*****b

    Wichtig ist auch, dass die Datei mit der entsprechenden Codierung geschrieben wurde.
  4. Autor dieses Themas

    tengames

    tengames hat kostenlosen Webspace.

    Die Daten habe ich (under Windows7) in eine .txt Datei geschrieben
    je Zeile ein Text-Block

    und lese sie mit file() in das Array $ausgabe

    <?php
    $tdata = file($meine_txt_datei); 
    $ausgabe = array(); 
    
    foreach($tdata as $tzeile) {
      $tzeile = trim(chop($tzeile)); // Zeilen-Umbruch entfernen 
        if (!empty($tzeile)) {  // keine leeren Zeilen einlesen
        $ausgabe[] = $tzeile; 
        }
    }
    
    ?>


    also im Text stehen Umlaufe ä ö ü im "Klartext" also ISO-8859-1 oder nicht ?



    Beitrag zuletzt geändert: 26.9.2011 13:47:33 von tengames
  5. g****e

    Ein ä,ö,ü kann auch in UTF-8 dargestellt werden. Daran scheiterts nicht.

    Mich würd mal interessieren, was für eine Anwendung du damit planst, also was ist dein Ziel. Wenn wir wissen, wofür du es brauchst, kann man dir vllt leichter helfen an dieses Ziel zu kommen.

    Liebe Grüße
  6. Autor dieses Themas

    tengames

    tengames hat kostenlosen Webspace.

    also .... eigentlich ganz einfach
    es geht um CSV Daten, die ich in der Datenbank (MySQL) cachen will

    da die einzelnen CSV-Listen von verschiedenen Quellen sind,
    sind die Inhalte u.a auch in unterschiedlicher codierung

    für das Speichern in der DB will ich aber eine einheitliche codierung
    also muss ich zuerst rausfinden, welche codierung die Quell-Daten sind
    um sie dann ggf. die codierung (Charset) "passend" für die DB zu ändern

    denn wenn ich utf8 nochmal utf8_encode() mache kommt totaler müll bei raus

    meine MySQL Tabelle habe ich mit DEFAULT CHARSET=utf8 angelegt
    aber trotz mysql_real_escape_string() vor Speichern kommt z.T. aber kein utf-8 in der DB an

    $spalte1 = mysql_real_escape_string($string1); // bei bestehender Verbindung

    was mich eh wundert,
    sollte doch eigentlich den DEFAULT CHARSET der MySQL verbindung nutzen, oder?

    also
    wie erkenne ich "unterschiedliche" Charset / Codierung von Daten aus CSV (txt)
    um diese für den Eintrag in die DB "einheitlich" zu formen ?
    was empfeht ihr, utf-8 oder latin1 oder welchen DEFAULT CHARSET sollte man nehmen?
    ?

    Beitrag zuletzt geändert: 26.9.2011 19:47:27 von tengames
  7. Also du hast doch genau erreicht, was du wolltest. Das detect funktioniert einwandfrei und gibt die den Zeichensatz zuverlässig zurück.
    Außerdem rate ich dir zu utf8. Das wurde speziell dafür gemacht einheitliche Zeichensätze einzuführen, also sollte man es auch nutzen.
    Welche Kollation von utf8 du nimmst ist abhängig von deinem Vorhaben.
  8. Autor dieses Themas

    tengames

    tengames hat kostenlosen Webspace.

    reimann schrieb:
    Welche Kollation von utf8 du nimmst ist abhängig von deinem Vorhaben.


    ich denke mal general

    einfach nur bei CREATE TABLE am Ende: DEFAULT CHARSET=utf8

    vielleicht liegt da ja der Fehler, heisst es utf8 oder utf-8 (in MySQL)

    ich habe den folgenden Code:
    $setup_result1 = mysql_query("CREATE TABLE IF NOT EXISTS `".$db_tabelle1."` (
      `id` int(9) NOT NULL AUTO_INCREMENT,
      `titel` varchar(250) NOT NULL,
      `url` varchar(250) NOT NULL,
      `descr` text NOT NULL,
      `img` varchar(250) NOT NULL,
      `kategorie` varchar(100) NOT NULL,
      `source` varchar(100) NOT NULL,
      `status` varchar(30) NOT NULL,
      PRIMARY KEY (`id`)
    )
     ENGINE=MyISAM
     DEFAULT CHARSET=utf8
     AUTO_INCREMENT=1
    ");


    oder muss ich für jede Spalte den Charset definieren, .... wie?
    bzw. welche Kollation könnt Ihr mir empfehlen ?
    Danke
  9. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!