| 

.NET C# Java Javascript Exception

0
meine Datei sieht so aus und ist eine php-datei

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<form method="post" action="">
Zu bearbeitende URL: <input type="text" name="Artikel"><br>
<input type="submit" name="senden" value="Senden">
</form>
<?php
if ($_POST['Artikel'] != "")
{
$bla = $_POST['Artikel'];
$bla = urldecode ($bla);
echo "$Umgewandelte URL: ";
echo ($bla);
}
?>
</body>

ziel ist, eine url mit Werten wie %20 oder %FC oder %E4 in eine lesbare form zu bringen.
Eigentlich sollte urldecode das machen. Leider wird bei Kombinationen anders als %20 (leerzeichen) ein kästchen wie bei Windings eingeblendet anstatt des umlauts.
Ich bin am Verzweifeln :(
News:
20.04.2011
Andylee 75 1 4
4 Antworten
1
Deine HTML seite besitzt den UTF-8 Charset, achte darauf das du die Seite auch im UTF-8 Format abspeicherst. Gute Editoren besitzen normalerweise eine Möglichkeit auszuwählen in welchen Charset die Datei selbst abgespeichert ist. Ist die Datei UTF-8 und der deklarierte HTML Charset auch UTF-8 solltes du keine Probleme mit Umlauten und Sonderzeichen bekommen.
21.04.2011
Marco Rieger 820 8
Guter Hinweis!
DaSpors 21.04.2011
Möchte noch hinzufügen: Stelle sicher, dass Du auch UTF-8 auslieferst (Content-Type header)
DaSpors 21.04.2011
0
Hallo,

ich hatte das Problem auch schon einmal. Ich habe es gelöst, indem ich jegliches Zeichen in den entsprechenden hex Wert umgewandelt habe und dann übertragen habe.

Somit würdest du aus dem einen Formular den Wert
48616c6c6f2057656c74
(Hallo Welt)
übertragen. Bei dem nächsten Dokument entschlüsselt du das wieder, indem du von Hex in einen Text umwandelst. Somit wird aus '48616c6c6f2057656c74' wieder 'Hallo Welt'.
Empfehlenswert wäre aber noch eine Trennung der einzelnen Buchstaben, da du bei Unicode und ASCII unterschiedliche Größen der Zeichen hast. Ein chinesisches Zeichen benötigt daher mehr Platz, als ein lateinisches 'a'. Der String könnte dann z.B so aussehen:
48-61-6c-6c-6f-20-57-65-6c-74
Ich hoffe das hilft dir.

Gruß Andy
20.04.2011
cruX 803 1 1 9
ich bin mir nicht sicher, ob mir das hilft:

Ich habe ja schon URLs mit den problematischen Begriffen %20, %E4 usw gegeben.

zB: www.ich.com/h%E4lle

Wenn ich das in hex umwandle, bringt mir das doch nichts, oder?
Andylee 20.04.2011
Was soll denn das 'hälle' darstellen? Ist das ein Ordner, wenn ja, würd ich das an deiner Stelle ändern ;) Ist nicht gerade fehlerunanfällig :)

Klar, mir fällt gerade ein, dass ich die URL aus einem C# Programm erzeugt habe, und daher immer genau wusste was in der URL steht. due wirst es vermutlich in html machen. Da fällt mir nur ein, dass du der Seite mitgibst in welchem Zeichenformat diese ist und diese auch dementsprechend speicherst. Schau dir dazu mal das hier an:
http://www.w3.org/International/questions/qa-changing-encoding
Habe es nur überflogen.
Gruß Andy
cruX 20.04.2011
ich bestimme die URL nicht, die wird von vielen menschen bestimmt, welche von dem keine Ahnung haben. es funktioniert ja mit umlauten auch (die sind mittlerweile offiziell erlaubt), es geht nur mit dem herumgewurstle mit %xx nicht!
Andylee 20.04.2011
0
ich bestimme die URL nicht, die wird von vielen menschen bestimmt, welche von dem keine Ahnung haben. es funktioniert ja mit umlauten auch (die sind mittlerweile offiziell erlaubt), es geht nur mit dem herumgewurstle mit %xx nicht!
20.04.2011
Andylee 75 1 4
Das ist richtig, dass Umlaute nicht funktionieren. Aber wenn da jeder was eintragen kann, kann ich dir da leider nicht weiter helfen. Dafür entwickel ich einfach zu wenig fürs Web. Sorry
cruX 20.04.2011
Sorry, ich meine natürlich, dass Umlaute mittlerweile zugelassen sind -.-
cruX 20.04.2011
0
Was bekommst Du, wenn Du das
$bla = urldecode ($bla);

einfach rauslässt?

Weil:
- Der Browser enkodiert die Formulareingaben richtig und schickt sie an den Server (PHP)
- PHP hat (normalerweise) im POST schon die dekodierten Daten drin

Wert im form: http://www.irgendwo.de/höi/
Browser enkodiert
PHP dekodiert
Wert in $_POST['Artikel']: http://www.irgendwo.de/höi/

Vielleicht ist 'einfach nur' die Ausgabe in HTML falsch.
Mach mal:
echo 'Umgewandelte URL: <input type="text" value="'.$_POST['Artikel'].'">';
20.04.2011
DaSpors 4,2k 2 8
Das Problem ist, dass die ordner tatsächlich a la www.example.com/hölle/tür/fähre heißen und wenn das mit den %XX geschrieben wird, funktioniert das im Browser nicht.
Andylee 20.04.2011
heisst das, dass die eingabe im textfeld schon url-encodiert vorgenommen wird? oder werden da äöü reingeschrieben? Ich hab das Problem so noch nie gesehen und schon eine Menge äöü eingaben gemacht :)
DaSpors 20.04.2011
poste doch mal ein paar ausgabewerte bitte
DaSpors 20.04.2011

Stelle deine Php-Frage jetzt!