Leerzeichen in UTF-8 codieren

Slin61

Mitglied
Ich versteh nicht, warum ich die umlaute alle in UTF-8 codieren kann, aber die Leerzeichen nicht. Hier ist mein Code:

PHP:
function umlaut_etc($string)
{               //ß
    $search = "ä";
    $replace = "ä";
    $string = str_replace($search,$replace,$string);

    $search = " ";
    $replace ="\u00A0";
    $string = str_replace($search,$replace,$string);


    $search = "ö";
    $replace = "ö";
    $string = str_replace($search,$replace,$string);

    $search   = " ";
    $replace =  "\u00A0";
    $string =  str_replace($search, $replace, $string);

/*    $search = "'";
    $replace = "'";
    $string = str_replace($search,$replace,$string);
*/
    $search = "Ä";
    $replace = "Ä";
    $string = str_replace($search,$replace,$string);

    $search = "Ö";
    $replace = "Ö";
    $string = str_replace($search,$replace,$string);

    $search = "Ü";
    $replace = "Ü";
    $string = str_replace($search,$replace,$string);

    $search = "ü";
    $replace = "ü";
    $string = str_replace($search,$replace,$string);

    $search = "ß";
    $replace = "ß";
    $string = str_replace($search,$replace,$string);

   return $string;

}

Für das Leerzeichen habe ich folgende Definition gefunden:

http://javathreads.de/2008/10/die-w...derzeichen-fuer-die-entwicklung-mit-facelets/

Deshalb das \u00A0, aber er erkennt das nicht. Alle anderen Sachen werden ersetzt nur das nicht. Ein String der übergeben wird sieht bei mir dann so aus:

Nach oben

Habt ihr einen Rat?
 
Zuletzt bearbeitet:
Da Du doppelte Anführungszeichen nutzt, musst Du die Unicode-Escape-Sequenz nochmal zusätzlich escapen:
PHP:
$replace ="\\u00a0";
oder so:
PHP:
$replace ='\u00a0';

Gruß
 
@Maniac: Schon probiert. Mein Problem ist, dass ich die Leerzeichen generell nicht ersetzen kann, egal was ich dafür einsetze.

@Raisch vielen Dank für den Hinweis, hab ich geändert, aber das Problem hat es leider auch nicht gelöst

Ich möchte, falls es euch hilft mir zuhelfen :) , Mit PHP einen Text generieren, der dann in einem Programm auf Javabasis angezeigt wird. Dort werden meine Leerzeichen jedoch als Kasten mit einem Fragezeichen dargestellt, daher versuche ich das Ganze in UTF-8 zu konvertieren, aber ich kann das Leerzeichen aus irgendeinem Grund nicht übersetzen. Da ich viele Variablen habe, kann ich keine GET-Methode, sondern nur POST verwenden und versuche mir jetzt erstmal den Inhalt der POST-Variablen vor der Übergabe anzeigen zu lassen. Danach schau ich mal was dabei raus kommt
 
Zuletzt bearbeitet:
Den Text, den ich einlese, ist in UTF-8. Das habe ich zu Iso konvertiert um es einfacher ausgeben zu können und dann wollte ich das wieder als UTF-8 haben, was bei den Umlauten auch klappt, nur bei den Leerzeichen zeigt er mir einen Fehler an.
 
Hab jetzt eine Idee. Wenn ich mit utf8_decode(); was mache, dann werden mir die Leerzeichen als Fragezeichen angezeigt. Also ersetze ich zuerst die Fragezeichen, dann utf8_decode() und schon habe ich meine Leerzeichen wieder :)) mal sehen ob es funktioniert
 
Zurück