blabla: Konvertierung in UTF-8

Hallo!

Ich muss ein kleines Projekt auf UTF-8 umstellen da bestimme jQuery Plugins und Json verwendet werden sollen.

Habe also die MySQL Tabellen, die Datenbankkommunikation, die Charset Einstellunge in den HTML Dokumenten, den Editor entsprechend umgestellt.

Nachdem zuerst session_start() nicht mehr funktioniert hat, habe ich ergoogelt, dass ich die Datein als UTF-8 ohne BOM speichern muss.

Jetzt stelle ich aber fest, dass diverse string-Funktionen ander reagieren.

im folgenden Beispielt wird z.B. ö4 ausgegeben.

  
$x = "öä";  
  
    echo (substr($x,0,2));  
    echo strlen($x);  

Habe ich irgendwas vergessen umzustellen oder kann man das anders lösen?
Danke!

  1. Jetzt stelle ich aber fest, dass diverse string-Funktionen ander reagieren.

    im folgenden Beispielt wird z.B. ö4 ausgegeben.

    $x = "öä";

    echo (substr($x,0,2));
        echo strlen($x);

    
    >   
      
    Die meisten Stringfunktionen sind nicht für Multibyte-Codierungen geeignet - sie zählen Bytes - keine Zeichen.  
      
    Österreich hat 10 Zeichen  
      
    In UTF-8 sind es 10 Zeichen aber 11 Bytes  
    In Latin-1 sind es 10 Zeichen und 10 Bytes  
      
    
    > Habe ich irgendwas vergessen umzustellen oder kann man das anders lösen?  
      
    Die meisten funktionen haben auch eine mb\_-Funktion (Multibyte) - also z.B. mb\_substr() - die Zählen dann richtig.
    
    1. Die meisten funktionen haben auch eine mb_-Funktion (Multibyte) - also z.B. mb_substr() - die Zählen dann richtig.

      Ahhh... Danke!

        
      $x = "öä";  
        
          echo mb_substr($x,0,2,'utf-8');  
          echo mb_strlen($x, 'utf-8');  
      
      

      Funktioniert *freu*. Wenn man nun in der .htaccess 'AddDefaultCharset UTF-8' anführt erspart man sich auch die encoding Angaben. Richtig?

      Macht es dann auch Sinn alle Dateien auf UTF-8 zu konvertieren? Also auch Dateien die keine Ausgabe an den Browser bewirken (.htaccess, robots.txt,...)?

      Danke!

      1. Funktioniert *freu*. Wenn man nun in der .htaccess 'AddDefaultCharset UTF-8' anführt erspart man sich auch die encoding Angaben. Richtig?

        Prinzipiell ja - allerdings schadet es nicht, das ganze manuell

        Macht es dann auch Sinn alle Dateien auf UTF-8 zu konvertieren? Also auch Dateien die keine Ausgabe an den Browser bewirken (.htaccess, robots.txt,...)?

        robots.txt kannst du im Browser ausgeben :)

        Wenn es keine wirklich begründete Ausnahme gibt, machst du dir das Leben leichter, wenn du alles in UTF-8 hältst.

        Wordpress z.B. kann .htaccess-Files manipulieren (um das Rewriting automatisch zu konfigurieren) und Tools die robots.txt-Files automatisch erstellen und ändern gibts auch genug - ggf. machst du dir auch mal selbst etwas in diese Richtung - da ist es von Vorteil wenn du dir dann keine gedanken mehr über die Codierung machen musst und überall durchgängig UTF-8 verwendest.

        1. Danke für alle Antworten!
          Ich denke ich habe jetzt alles Notwendige beisammen!

      2. @@blabla:

        nuqneH

        Macht es dann auch Sinn alle Dateien auf UTF-8 zu konvertieren? Also auch Dateien die keine Ausgabe an den Browser bewirken (.htaccess, robots.txt,...)?

        Darin kommen vermutlich ausschließlich ASCII-Zeichen (U+0000 bis U+007F) vor. Dann sind die Bytesequenzen in den Codierungen ISO-8859-x und UTF-8 (ohne BOM) exakt gleich.

        Qapla'

        --
        Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
        (Mark Twain)