php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger

PHP Einsteiger PHP Problemlösungen für Spracheinsteiger
Archive: 2004, 2004/2, 2005, 2005/2, 2006, 2007, 2008, 2009, 2010,

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 02.04.2011, 05:51  
Neuer Benutzer
 
Registriert seit: 08.12.2010
Beiträge: 10
PHP-Kenntnisse:
Anfänger
Ruffy befindet sich auf einem aufstrebenden Ast
Standard Verflixte Umlaute...

Hi Leute,

ich habe ein ganz dummes Problem mit meiner Kodierung und komm einfach nicht drauf wie ich es lösen soll.

Also zum Problem:
Ich übergebe eine Variable per get um eine Suche auszuführen.
Jetzt ist es so, wenn ich zb. "händler" normal per Formular übergebe funktioniert es einwandfrei und auf der nächsten Seite wird der Treffer richtig angezeigt und auch die Variable wird richtig übergeben. Führe ich die Suche aber direkt im Browser aus, also zb. "?s=händler" dann verändert sich die übergebene Variable in "h%E4ndler" und natürlich gibt es dann keinen Treffer. Dieses Problem konnte ich aber lösen indem ich utf8_encode() verwende, dann wird der Treffer wieder richtig angezeigt. Jetzt kommt aber der Hammer .
Benutze ich utf8_encode() und übergebe die Variable per Formular kommt auf der nächsten Seite "händler" an. Also egal wie ich es drehe und wende, entweder funktioniert die Suche per Input oder per Adressleiste nicht. Ich würde aber gerne dass den Usern beide Möglichkeiten offen stehen. Was mache ich falsch und wie kann mein Problem gelöst werden?
Danke!

PS: Seite ist UTF-8 kodiert.
Ruffy ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 02.04.2011, 08:33  
Erfahrener Benutzer
 
Benutzerbild von serious-cool
 
Registriert seit: 12.09.2008
Beiträge: 154
PHP-Kenntnisse:
Fortgeschritten
serious-cool befindet sich auf einem aufstrebenden Ast
Standard

Stimmen die Datenbank Koalitionen? utf8_bin?

Wie schreibst Du die Inhalte in die Datenbank? Bis auf mysql_real_escape_string() unbehandelt?!
Konvertierung erst und einmalig bei der Ausgabe nutzen. Wenn die Daten in ,,Rohform" in der DB stehen kannst Du auch Vergleiche ausführen. Ansonsten schau dir mal an was ein Formular mit den Eingaben macht:
Wenn alles stimmt sollte ein &aauml; das ins Formular eingegeben wird, als ä beim Server landen.

Charset im Doctype und meta stimmen?
__________________
Ein Klauenhammer ist kein Schraubendreher, auch wenn beide das Problem ,,Schraube-Wand" bidirektional lösen können.
serious-cool ist offline   Mit Zitat antworten
Alt 02.04.2011, 09:32  
Neuer Benutzer
 
Registriert seit: 08.12.2010
Beiträge: 10
PHP-Kenntnisse:
Anfänger
Ruffy befindet sich auf einem aufstrebenden Ast
Standard

Hi,
danke für die Antwort aber mit der Datenbank hat das ganze erst mal nix zu tun, weil die Variable kommt schon vermurxt auf der anderen Seite an. Ich erklärs nochmal bissle ausführlicher an einem einfachen Beispiel, was aber im Grunde mein ganzes Problem perfekt wiederspiegelt:

Code ohne utf8_encode()
PHP-Code:
<?php
header
("Content-Type: text/html; charset=utf-8");
echo 
$_GET["s"]

echo 
'
<form action="'
.$_SERVER['PHP_SELF'].'" method="get">
<input name="s" type="text" />
<input type="submit"  />
</form>'
?>
Ergebniss:
Gesendet per Input: $_GET["s"] = "händler"
Gesendet per Adresszeile: $_GET["s"] = "h%E4ndler"


Code mit utf8_encode()
PHP-Code:
<?php
header
("Content-Type: text/html; charset=utf-8");
echo 
utf8_encode($_GET["s"]);

echo 
'
<form action="'
.$_SERVER['PHP_SELF'].'" method="get">
<input name="s" type="text" />
<input type="submit"  />
</form>'
?>
Ergebniss:
Gesendet per Input: $_GET["s"] = "händler"
Gesendet per Adresszeile: $_GET["s"] = "händler"
Ruffy ist offline   Mit Zitat antworten
Alt 02.04.2011, 10:30  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Zitat:
utf8_encode
ist ja auch falsch. Erstens ist das wenn ein decode und zweitens (falls überhaupt nötig) ein url_decode.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 02.04.2011, 10:46  
Neuer Benutzer
 
Registriert seit: 08.12.2010
Beiträge: 10
PHP-Kenntnisse:
Anfänger
Ruffy befindet sich auf einem aufstrebenden Ast
Standard

Hi nikosch!
Habs mit urldecode() probiert und verhält sich genauso wie Beispiel 1, per Input klappts, per Direkt Eingabe nicht.
Ob es nötig ist oder nicht ist ja genau die Frage, ich bin für jede Alternative offen die mein Problem löst.
Es handlet sich um eine normale Suchfunktion die eben nicht nur funktionieren soll bei Eingabe im Input Feld sondern auch bei Direkt Aufruf.
Ich kenne es von mir selber dass ich manchmal lieber den Suchbegriff direkt in die Adresszeile eingebe damit ich schneller zum Ziel komme und diese Möglichkeit will ich meinen Usern eben auch geben und zwar auch bei Abfrage von Umlauten.
Nur komischerweise reagiert das Script eben unterschiedlich auf die Get Variable, je nachdem ob es per Input oder direkt übergeben wurde.
Ruffy ist offline   Mit Zitat antworten
Alt 02.04.2011, 11:31  
Moderator
 
Registriert seit: 06.06.2008
Beiträge: 4.945
PHP-Kenntnisse:
Fortgeschritten
Wolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer Anblick
Wolla eine Nachricht über ICQ schicken
Standard

PHP-Code:
// Script 1
$parameter='händler';
$link 'http://example.org/index.php?para=' url_encode($parameter); 
PHP-Code:
// Script 2
echo $_GET['para']; 
url_decode ist nicht nötig.
__________________
Warum denkt mein Hund eigentlich immer dann, wenn es an der Tür klingelt, es sei für ihn?
Wolla ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] Umlaute (&amp;auml;) umwandeln chr1s-eg PHP Einsteiger 10 24.01.2011 12:41
[Erledigt] PHPMailer und Umlaute Sirius PHP Tipps 2010 14 30.03.2010 15:14
Umlaute und MySQL4.1 Datenbanken 2 15.11.2009 15:28
Umlaute mit Request richtig übertragen Lebenssonde JavaScript, Ajax und mehr 4 28.07.2009 15:10
[Erledigt] Kann keine Umlaute im mysql client eingeben Oger Datenbanken 9 02.04.2009 11:54
MySQL Konsole und Umlaute unter Windows [LÖSUNG] f4ckm5 Datenbanken 8 30.03.2009 22:10
[Erledigt] Umlaute und Sonderzeichen decodieren Sermon PHP Tipps 2009 9 27.03.2009 08:18
Umlaute im Mailfomular werden falsch angezeigt macstef PHP Tipps 2008 5 29.12.2008 10:34
Umlaute und str_replace MatzeMuc86 PHP Tipps 2008 20 22.10.2008 20:41
Umlaute und Ajax themonk JavaScript, Ajax und mehr 5 12.10.2008 18:30
Umlaute in Datenbank Eldra PHP Tipps 2008 3 14.05.2008 07:11
UTF8 Dump erzeugt nach import in UTF8 kod DB falsche Umlaute Carino Datenbanken 18 07.05.2007 23:49
Umlaute bei Linux flual2000 PHP Tipps 2006 10 28.04.2006 13:12
Umlaute... JK PHP-Fortgeschrittene 7 07.12.2005 20:55
Umlaute in Dateien per CLI in HTML-Entities umwandeln PHP-Fortgeschrittene 5 19.07.2005 09:06

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php getvariable inputtext sonderzeichen umwandeln, umlaute richtig an mysql übergen php, php umlaute per get übergeben, get input umlaute, übergabe umlaut variable _get, php ajax umlaute übergeben, input umlaute übergeben, umlaute mit php richtig übergeben, php formular umlaute richtig übergeben

Alle Zeitangaben in WEZ +2. Es ist jetzt 15:35 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum