Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Prototype übermittelt kein "ß" (https://www.delphipraxis.net/99596-prototype-uebermittelt-kein-ss.html)

TheMiller 14. Sep 2007 14:09


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:
<!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">
Das PHP-Skript, welches von Prototype angesprochen wird, hat folgenden Charset:

Code:
header('Content-Type: text/html; charset=iso-8859-1');
Was ist daran jetzt falsch??

Danke im Voraus

mkinzler 14. Sep 2007 14:10

Re: Prototype übermittelt kein "ß"
 
Codier das Zeichen doch:
&szlig;

TheMiller 14. Sep 2007 14:29

Re: Prototype übermittelt kein "ß"
 
Hm, ich habe jetzt im PHP Skript folgendes:

Code:
$titel = str_replace("ß", "&szlig;", $_REQUEST['titel']);
Angezeigt wird dann

Code:
große
Habe ich es an der falschen Stelle codiert?

Bernhard Geyer 14. Sep 2007 14:32

Re: Prototype übermittelt kein "ß"
 
ß ist die UTF8-Darstellung von ß.

Also läuft irgendwo noch eine UTF8-Wandlung.

TheMiller 14. Sep 2007 14:35

Re: Prototype übermittelt kein "ß"
 
Nein, es läuft keine codierung mehr.

An den Charsets der Dateien liegt es aber auch nicht... oder?

Bernhard Geyer 14. Sep 2007 14:41

Re: Prototype übermittelt kein "ß"
 
Zitat:

Zitat von DJ-SPM
Nein, es läuft keine codierung mehr.

Und wie soll dann die UTF8-Codierung entstehen?
Es muß ja keine von dir implementierte Codierung sein sondern irgendwelches Default-Verhalten.

TheMiller 14. Sep 2007 14:43

Re: Prototype übermittelt kein "ß"
 
Hm.. wie kann ich das jetzt noch richtigstellen?

Bernhard Geyer 14. Sep 2007 14:56

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.

TheMiller 14. Sep 2007 15:03

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...

CalganX 14. Sep 2007 15:16

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

TheMiller 14. Sep 2007 15:26

Re: Prototype übermittelt kein "ß"
 
Also, ich habe meinen Charset meiner einen HTML-Datei auf utf-8 gestellt und alle Sonderzeichen (äüöß...) werden nicht angezeigt...

TheMiller 14. Sep 2007 16:22

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:
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
PHP:

Code:
header('Content-Type: text/html; charset=iso-8859-1');
$titel = iconv("UTF-8", "iso-8859-1", $_REQUEST['titel']);
Danke!

Matze 14. Sep 2007 16:28

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.

TheMiller 14. Sep 2007 16:35

Re: Prototype übermittelt kein "ß"
 
Diese Funktion gibt es in PHP nicht. Nur utf8_encode.

Der String wird im Prototype gelöscht... (denke ich);

Matze 14. Sep 2007 16:39

Re: Prototype übermittelt kein "ß"
 
Zitat:

Zitat von DJ-SPM
Diese Funktion gibt es in PHP nicht. Nur utf8_encode.

Seit wann das denn?

Die Funktion ist seit PHP4 enthalten, siehe php.net.

Edit: Es wäre auch leicht schwachsinnig, wenn PHP nur Funktionen für eine Konvertierungsrichtung anbieten würde, oder? ;)

TheMiller 14. Sep 2007 16:52

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?

Garfield 15. Sep 2007 12:48

Re: Prototype übermittelt kein "ß"
 
Zitat:

Zitat von DJ-SPM
Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"

Seit wann gibt es im englischen ein "ß"?

TheMiller 15. Sep 2007 13:15

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

marabu 15. Sep 2007 13:35

Re: Prototype übermittelt kein "ß"
 
Hallo,

Zitat:

Zitat von Garfield
...
Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN&quot;
Seit wann gibt es im englischen ein "ß"?

Das EN wird vom Publisher "W3C" festgelegt und informiert über die Sprache, in welcher die DTD mit dem Public Name "XHTML 1.0 Strict" verfasst wurde. Das hat nichts mit der Sprache des Textes auf der Web-Seite zu tun.

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

Garfield 15. Sep 2007 13:41

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">

marabu 15. Sep 2007 13:45

Re: Prototype übermittelt kein "ß"
 
Hi,

Zitat:

Zitat von Garfield
Das wusste ich nicht.

das ist keine Schande - die wenigsten kennen sich mit SGML aus.

Zitat:

Zitat von Garfield
In der zweiten Zeile steht da auch oft:
Code:
<html xmlns="http://www.w3.org/1999/xhtml&quot; xml:lang="en" lang="de">

Das macht irgendwie auch Sinn: Content ist Deutsch, Markup ist Englisch.

Freundliche Grüße

Thorben77 15. Sep 2007 14:28

Re: Prototype übermittelt kein "ß"
 
Das xml:lang- und das lang-Attribut sollten aber den gleichen Wert haben, sie geben beide die Sprache des Inhalts an.

marabu 15. Sep 2007 14:39

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 18:39 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz