[PHP] UTF-8 verschiebt layout

Dieses Thema im Forum "Webentwicklung" wurde erstellt von encud, 16. August 2010 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 16. August 2010
    UTF-8 verschiebt layout

    moin zusammen.
    ich habe ein paar seiten die ich ineinander includiere (normale includes wie auch klassen).
    nun hatte ich unter diesen eine seite welche html code in einer php variable speichert, in welcher umlaute drin waren. damit mir das dann richtig angezeigt wird, hab ich die seite in utf-8 (mit notepad++) von ANSI umkodiert.
    dadurch hat sich mein layout etwas verschoben. hab daher mal mit Strg + U den quelltext geöffnet und in dreamviewer reinkopiert, an der stelle wo das problem auftritt ist auf einmal folgendes zeichen zu finden: (wenn mans nicht erkennen kann, ist ein punkt der relativ in der mitte von einer textreihe ist, wenn ichs in notepad kopiert habe hat er mir einen quader angezeigt).

    warum ist das so und vorallem: wie bekomm ich das wieder hin?
    hab darauf hin alle datein in utf-8 kodiert, dann hatte ich noch viel mehr verschiebungen, darauf hin hab ich wieder alles in ANSI kodiert jetzt funktioniert wieder alles.

    hab in den meta-tags wie auch im xml-tag (heißt das so?) die utf-8 kodierung angegeben, das script ist nach firebug korrekt validiert!

    habt ihr ne idee?

    gruß encud

    PS: hatte keine ahnung ob das präfix "php" hier passt, ich arbeite mit php deshalb hab ich das einfach gewählt
     
  2. 16. August 2010
    AW: UTF-8 verschiebt layout

    Hm, das verstehe ich nicht ganz. Wie wird denn der Code in der Variable gespeichert?
    Einfach mittels
    PHP:
    $var  '<html>' ;
    oder
    PHP:
    ob_start ();
    include(
    'include/irgendwas.html' );
    $var  ob_get_flush ();
    oder anders?
     
  3. 16. August 2010
    AW: UTF-8 verschiebt layout

    tach. du musst das ganze in utf-8 ohne BOM konvertieren, dann ist der punkt weg.
     
  4. 16. August 2010
    AW: UTF-8 verschiebt layout

    einfach:
    PHP:
    $var  '<html>'
    aber ist auch eher nebensache.

    hört sich gut an... kann man das eigentlich auch irgendwie mit dreamveawer machen? hab hier zu hause nix anderes installiert und damit hab ich bisher nur hinbekommen neue dokumente anders zu kodieren?!
     
  5. 16. August 2010
    AW: UTF-8 verschiebt layout

    lade dir notepad++ runter, danach öffnest du die jenige datei und in der oberen leiste auf "format" klicken. kodieren und konverntieren möglich
     
  6. 16. August 2010
    AW: UTF-8 verschiebt layout

    soll ich daraus schließen das es mit dreamweaver nicht möglich ist?
     
  7. 17. August 2010
    AW: UTF-8 verschiebt layout

    Googeln hätte auch geholfen:

    Dreamweaver
    • Öffnen des Menüs Bearbeiten->Voreinstellungen
    • Wählen der Kategorie "Neues Dokument"
    • Unter "Standardkodierung" Unicode(UTF-8) auswählen
    • Das Häkchen bei "Unicode-Signatur (BOM) einschließen" entfernen
     
  8. 17. August 2010
    AW: UTF-8 verschiebt layout

    Voreinstellungen "Neues Dokument" bezieht sich doch mit Sicherheit nur auf ein Neues Dokument, oder nicht? Ich bin nicht blöd und kann google benutzen... hab oben auch schon geschrieben das ich es nur hinbekommen habe auf neue dokumente das ganze umzukodieren!
     
  9. 17. August 2010
    AW: UTF-8 verschiebt layout

    Da ein Direktes Konvertieren wohl nicht möglich ist musst du es halt wie oben schrieben umstellen und dann bei jeder Datei folgende Schritte machen:

    • Strg.+A
    • Strg.+C
    • Strg.+N
    • Strg.+V
    • Strg.+S
    • Dateinamen Eintippen
    • Enter
     
  10. 17. August 2010
    AW: UTF-8 verschiebt layout

    ich verstehe^^ alles klar dann habt vielen dank!

    ~close~
     
  11. 22. August 2010
    AW: UTF-8 verschiebt layout

    Ich muss hier leider noch einmal öffnen und das ganze nach oben pushen, ich verzweifel gleich.

    mein problem ist nun, dass ich daten aus der datenbank hole, welche umlaute und co beinhalten.
    die daten für die datenbank hab ich erstmal manuell mit phpmyadmin eingefügt, die tabellen werden mit folgendem code generiert:
    Code:
    CREATE TABLE IF NOT EXISTS `table` (
     `id` int(11) NOT NULL AUTO_INCREMENT,
     `text` text DEFAULT NULL,
     PRIMARY KEY (`id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci AUTO_INCREMENT=0 ;
    mit nem normalem query werden die daten jetzt aus der datenbank geholt und per echo ausgegeben.
    umlaute werden nun im quelltext wie auch auf der abgerufenen homepage mit "?" dargestellt.
    hab auch php auf utf8 umgestellt:
    PHP:
    header ( 'Content-Type: text/html; charset=utf-8' );
    jetzt hab ich die datein abermals mit notepad++ geöffnet und die kodierung angeschaut: stand wieder auf ANSI?!
    also wieder konvertiert und gespeichert, geschlossen, wieder geöffnet und es steht wieder "Kodierung: ANSI"
    wenn ich mit dreamweaver ne neue datei öffne und in den voreinstellungen auf utf8 gestellt hab, dann mit notepad++ öffne das selbe problem... was mach ich falsch?!

    PS: umlaute die ich nicht aus einer datenbank holte werden, werden richtig angezeigt, auch wenn sie über php mit echo ausgegeben werden!
     
  12. 22. August 2010
    AW: UTF-8 verschiebt layout

    um utf-8 inhalte korrekt in die db einzufügen und auszulesen musst du dem mysql-server zuerst mitteilen das du utf-8 texte haben möchtest.

    dafür sind zwei querys nötig:
    Code:
    SET NAMES "utf8"
    SET CHARACTER SET "utf8"
    zur info: der php-interpreter kann nicht mit utf-8 umgehen. d.h.: wenn du php-dateien als utf-8 abspeicherst kann es zu unerwartetem verhalten kommen (zb komische zeichen am anfang). php-dateien müssen immer als ANSI gespeichert werden. deswegen ist es auch nicht möglich unicode-strings in einer php-datei zu verwenden.

    PHP:
    $foo  "unicode-zeichen etc" // fehlerhaft!
    $foo  mb_convert_encoding ( "unicode-zeiche etc" "UTF-8" );  // richtig!
    diese einschränkungen werden erst mit php6 wegfallen, denn dann gibt es sog. binary-strings:
    PHP:
    $foo  b"unicode-zeichen etc" // richtig!
    anonsten wird php deine statischen strings immer als iso-8859-1 behandeln.

    soviel erstmal dazu.

    der datentyp "string" in php kann aber jetzt schon viel mehr als nur iso-8859-1 (diese einschränkung besteht nur bei statischen "strings"). du kannst jedes beliebige zeichen in einen string speichern (egal ab lesbar oder nicht [binär]).

    merke: html als utf-8 = okay, php < 6 als utf-8 = fail
     
  13. 22. August 2010
    AW: UTF-8 verschiebt layout

    ahhh jaaa utf8_encode(), da war wars^^
    wollte ich mir irgendwann mal merken aber sieht man ja was draus gewurden ist.
    vielen dank für die ausführliche erklärung, hat mir sehr geholfen
     
  14. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.