![]() |
Prototype übermittelt kein "ß"
Hallo,
ich habe eine Webanwendung mit Prototype geschrieben. Möchte ich jetzt von der HTML-Seite an das PHP-Skript einen String mit "ß" übergeben, so kommt da nicht richtig auf der PHP-Seite an. Gibt aber PHP einen String mit "ß, ü..." zurück, kommen diese auf der HTML Seite richtig an. Mein HTML-Dokument hat fogenden Doctype und Charset:
Code:
Das PHP-Skript, welches von Prototype angesprochen wird, hat folgenden Charset:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
Code:
Was ist daran jetzt falsch??
header('Content-Type: text/html; charset=iso-8859-1');
Danke im Voraus |
Re: Prototype übermittelt kein "ß"
Codier das Zeichen doch:
ß |
Re: Prototype übermittelt kein "ß"
Hm, ich habe jetzt im PHP Skript folgendes:
Code:
Angezeigt wird dann
$titel = str_replace("ß", "ß", $_REQUEST['titel']);
Code:
Habe ich es an der falschen Stelle codiert?
große
|
Re: Prototype übermittelt kein "ß"
ß ist die UTF8-Darstellung von ß.
Also läuft irgendwo noch eine UTF8-Wandlung. |
Re: Prototype übermittelt kein "ß"
Nein, es läuft keine codierung mehr.
An den Charsets der Dateien liegt es aber auch nicht... oder? |
Re: Prototype übermittelt kein "ß"
Zitat:
Es muß ja keine von dir implementierte Codierung sein sondern irgendwelches Default-Verhalten. |
Re: Prototype übermittelt kein "ß"
Hm.. wie kann ich das jetzt noch richtigstellen?
|
Re: Prototype übermittelt kein "ß"
Wir hatten mal einen anderen fall mit statischen UTF8-Codierten HTML-Seiten. Diese wurden vom Server mit ISO-Codierung ausgeliefert und damit Fehlerhaft dargestellt (Von Browsern wurde Angabe im HTML-Header ignoriert). Erst nach konfiguration des Webservers hat es geklappt. Frag mich nicht welche Schraube es war. Hat der Provider gemacht.
|
Re: Prototype übermittelt kein "ß"
Hm, das ist schlecht...
Kann ich bei Prototype die Charset einstellen? Denn, es liegt ja am Prototype. Wenn der den gleichen Charset hat, wie alles andere, dann wäre ja alles ok... |
Re: Prototype übermittelt kein "ß"
Warum nicht allgemein UTF-8 verwenden? Heute kann eigentlich jeder Computer Unicode-Zeichen darstellen und auch was die Größe der ausgelieferten Dateien betrifft ist dieser Unterschied wirklich minimal. Ich glaube kaum, dass es noch so viele Leute mit 14K-Modem gibt, die das *wirklich* betrifft.
Generell gilt: alle Dateien in bestimmten Zeichensatz speichern (manuell noch mal selber so speichern, wie man es haben will), über die .htaccess-Datei des Apaches oder über die Config des IIS den Zeichensatz festlegen und in _jeder_ Datei kontrollieren, dass er richtige Zeichensatz angegeben ist. Sollten dann immer noch Zeichen falsch dargestellt werden, wird es mit hoher Wahrscheinlichkeit am Browser liegen. Chris |
Re: Prototype übermittelt kein "ß"
Also, ich habe meinen Charset meiner einen HTML-Datei auf utf-8 gestellt und alle Sonderzeichen (äüöß...) werden nicht angezeigt...
|
Re: Prototype übermittelt kein "ß"
So,
habs jetzt fast. Jetzt ist nur noch das Problem, dass er beim Vorkommen eines "?" den kompletten String löscht. Umlaute funktionieren. Habs jetzt so: HTML:
Code:
PHP:
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
Code:
Danke!
header('Content-Type: text/html; charset=iso-8859-1');
$titel = iconv("UTF-8", "iso-8859-1", $_REQUEST['titel']); |
Re: Prototype übermittelt kein "ß"
Du könntest anstelle von inconv auch mal utf8_decode probieren. Wieso dein Code allerdings einen String, der ein Fragezeichen enthält, löscht, kann ich mir nicht erklären.
|
Re: Prototype übermittelt kein "ß"
Diese Funktion gibt es in PHP nicht. Nur utf8_encode.
Der String wird im Prototype gelöscht... (denke ich); |
Re: Prototype übermittelt kein "ß"
Zitat:
Die Funktion ist seit PHP4 enthalten, siehe ![]() Edit: Es wäre auch leicht schwachsinnig, wenn PHP nur Funktionen für eine Konvertierungsrichtung anbieten würde, oder? ;) |
Re: Prototype übermittelt kein "ß"
Natürlich gibts die Funktion. Ich habe mich nur dummerweise verschreiben. Aber Strings mit "?" werden trotzdem gekillt. Und das scheint vom prototype zu kommen. Was kann ich da jetzt machen?
|
Re: Prototype übermittelt kein "ß"
Zitat:
|
Re: Prototype übermittelt kein "ß"
Hm... keine Ahnung :wink:
Aber ich habe es so gelöst, dass ich vor dem Versenden mit Prototype den String mit escape behandle... Danke |
Re: Prototype übermittelt kein "ß"
Hallo,
Zitat:
Das Problem hier scheint einfach zu sein, dass JavaScript grundsätzlich nur UTF-8 kennt. Will ich etwas anderes, dann muss ich explizit übersetzen, solange mir das keine Automatik abnimmt. Grüße vom marabu |
Re: Prototype übermittelt kein "ß"
Das wusste ich nicht. Habe jetzt auch gesehen, dass in den Beispielen immer ein EN angegeben ist. In der zweiten Zeile steht da auch oft:
Code:
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="de">
|
Re: Prototype übermittelt kein "ß"
Hi,
Zitat:
Zitat:
Freundliche Grüße |
Re: Prototype übermittelt kein "ß"
|
Re: Prototype übermittelt kein "ß"
Hallo Thorben,
das siehst du richtig - die beiden Attribute beziehen sich ja auf dasselbe Dokument. Sorry. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:56 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz