php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2008

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 05.07.2007, 14:10  
Erfahrener Benutzer
 
Registriert seit: 16.08.2007
Beiträge: 702
PHP-Kenntnisse:
Anfänger
Igäl befindet sich auf einem aufstrebenden Ast
Standard htmlentities() mag kein UTF-8

Hallo Leute

Ich hab grad ein kleines Problem und blick nicht richtig durch, wie ich das beheben könnte. Folgende Ausgangslage:

MySQL Datenbank-Kollation: utf8_unicode_ci
Eingabestring: "Hällö, wür würden gärne wäs käufen";
Ausgabe: "Hällö, wür würden gärne wäs käufen"
Meta: <meta http-equiv="content-type" content="text/html; charset=utf8_unicode_ci">


Die Eingabe nimmt den Weg über ein Formular (POST) an ein PHP-Script, wo es dann über eine Funktion in die Datenbank geschrieben wird. Wenn ich in der Funktion htmlspecialchars()/htmlentities() aktiviere, kommt es komisch in der DB an, ansonsten so wie es eingegeben ist. Hat einer ne Ahnung, was da schief laufen könnte? Mir sind die Ideen ausgegangen.

Greetz Igäl
Igäl ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 05.07.2007, 14:24  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Das ist falsch:
<meta http-equiv="content-type" content="text/html; charset=utf8_unicode_ci">

Das ist richtig:
<meta http-equiv="content-type" content="text/html; charset=utf-8">

Wichtiger aber ist das Mitsenden eines header('Content-type: text/html; charset=utf-8');
Wobei dann deine PHP-Skripte auch in UTF-8 abgespeichert werden sollten.
Zergling-new ist offline  
Alt 05.07.2007, 14:32  
Erfahrener Benutzer
 
Registriert seit: 16.08.2007
Beiträge: 702
PHP-Kenntnisse:
Anfänger
Igäl befindet sich auf einem aufstrebenden Ast
Standard

Hm.... mit htmlspecialchars hats irgendwie besser geklappt als mit htmlentities... aber hab das meta dennoch korrigiert. Vielen Dank
__________________
Das Recht auf Dummheit gehört zur Garantie der freien Entfaltung der Persönlichkeit.
Mark Twain
Igäl ist offline  
Alt 05.07.2007, 19:45  
Erfahrener Benutzer
 
Registriert seit: 17.01.2006
Beiträge: 468
Slava
Standard

ausserdem hat htmlspecialchars noch ein 3-er parameter, der sehr wichtig sein kann.
__________________
Slava
http://bituniverse.com
Slava ist offline  
Alt 05.07.2007, 21:05  
Erfahrener Benutzer
 
Registriert seit: 16.08.2007
Beiträge: 702
PHP-Kenntnisse:
Anfänger
Igäl befindet sich auf einem aufstrebenden Ast
Standard

Jo... hab ich dabei berücksichtigt...

htmlspecialchars($var, ENT_NOQUOTES, UTF-;
__________________
Das Recht auf Dummheit gehört zur Garantie der freien Entfaltung der Persönlichkeit.
Mark Twain
Igäl ist offline  
Alt 26.11.2009, 14:53  
Neuer Benutzer
 
Registriert seit: 26.11.2009
Beiträge: 27
PHP-Kenntnisse:
Anfänger
explode befindet sich auf einem aufstrebenden Ast
Standard

Bitte nicht töten für das Ausgraben

Danke für den Beitrag, hat letztlich auch so geklappt, denn vorher wurde "Jäger" zu "J&Atilde;&curren;ger" umgewandelt. Jetzt mit
PHP-Code:
htmlentities($_POST['nachname'], ENT_QUOTES"UTF-8"); 
klappt es wunderbar. In Igäls Beispiel fehlen noch die Anführungsstiche um das UTF-8.
explode ist offline  
Alt 26.11.2009, 15:06  
Erfahrener Benutzer
 
Registriert seit: 21.12.2004
Beiträge: 4.651
PHP-Kenntnisse:
Fortgeschritten
mepeisen ist ein Lichtblickmepeisen ist ein Lichtblickmepeisen ist ein Lichtblickmepeisen ist ein Lichtblickmepeisen ist ein Lichtblickmepeisen ist ein Lichtblick
mepeisen eine Nachricht über ICQ schicken mepeisen eine Nachricht über Skype™ schicken
Standard

Dafür hat er ein cooles Smilie gezaubert
Richtig, die Anführungszeichen fehlten hier.
__________________
Entwickler aus Leidenschaft und ein Zahnrad in einem der größten Java-Projekte der Welt.
mepeisen ist offline  
Alt 26.11.2009, 21:37  
Supermoderator HD
 
Benutzerbild von Manko10
 
Registriert seit: 16.03.2008
Beiträge: 8.425
PHP-Kenntnisse:
Fortgeschritten
Manko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende Zukunft
Standard

Und da stellt sich mir wieder die Frage, wozu in drei Teufels Namen man Umlaute bei einer Unicode-Kodierung in Entitäten umwandeln muss. Nutzt doch einfach htmlspecialchars().
__________________
Refining Linux Advent Calendar series “24 Outstanding ZSH Gems
Manko10 ist offline  
Alt 26.11.2009, 21:47  
Neuer Benutzer
 
Registriert seit: 26.11.2009
Beiträge: 27
PHP-Kenntnisse:
Anfänger
explode befindet sich auf einem aufstrebenden Ast
Standard

Also specialchars wandelt nur so was wie ", > und & um, aber äöü bleiben in UTF-8 bestehen?

Ich will nur HTML und solche Dinge maskieren, denn die Sachen kommen in eine MySQL Datenbank und da muss alles steril sein. specialchars ist dann kein Sicherheitsrisiko gegenüber entities?
explode ist offline  
Alt 26.11.2009, 21:50  
Supermoderator HD
 
Benutzerbild von Manko10
 
Registriert seit: 16.03.2008
Beiträge: 8.425
PHP-Kenntnisse:
Fortgeschritten
Manko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende Zukunft
Standard

Ja, und nein: kein Sicherheitsrisiko.
Umlaute in Entitäten umzuwandeln ist bei Unicode ziemlich überflüssig. Es gibt natürlich einige exotische Ausgabegeräte, die immer noch kein Unicode können, aber bei denen wird es eh Probleme geben, da Nicht-ASCII-Zeichen mit mehreren Bytes kodiert werden, in UTF-8 mit 2 bis 4.
__________________
Refining Linux Advent Calendar series “24 Outstanding ZSH Gems
Manko10 ist offline  
 


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
htmlentities - teilweise umwandlung in seltsame zeichen Drache PHP Tipps 2007 2 08.07.2007 17:07
htmlentities mit Ausnahmen Andreas L. PHP Tipps 2007 3 21.12.2006 19:44
htmlentities() nur auf bestimmten Bereich rocco PHP Tipps 2006 14 16.07.2006 20:23
htmlentities und nl2br in einem kombiniert wiegia086 PHP Tipps 2006 7 22.04.2006 01:19
htmlentities bei post notyyy PHP Tipps 2006 1 04.03.2006 01:14
[Erledigt] htmlentities - viel zu viele backslashes *w�hh?* PHP Tipps 2007 3 14.11.2005 22:22
htmlspecialchars() vs htmlentities() vs addslashes() PHP Tipps 2005-2 3 16.09.2005 13:08
formular und htmlentities PHP Tipps 2005-2 4 15.09.2005 13:21
htmlentities klappt nicht Matthiasnet PHP Tipps 2005-2 8 10.09.2005 10:53
problem mit htmlentities Schiedsrichter PHP Tipps 2005-2 1 08.09.2005 14:30
htmlentities vs. htmlspecialchars bicpi PHP-Fortgeschrittene 7 04.09.2005 23:17
nl2br & htmlentities kombinieren faultier PHP Tipps 2005-2 3 19.06.2005 12:01
[Forum-Projekt] Verständnisfrage zu htmlentities aktionkuba PHP Tipps 2005 9 08.04.2005 10:00
String von htmlentities() wieder in alten String Alpha Centauri PHP Tipps 2005 13 22.03.2005 17:20
Alle Dateneingaben durch htmlentities laufen lassen PHP Tipps 2004 4 25.06.2004 15:56

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
htmlentities utf-8, htmlentities utf8, php htmlentities utf-8, htmlentities charset, php htmlentities utf8, utf-8 htmlentities, utf8 htmlentities, htmlentities utf 8, htmlentities utf, html entities utf8, php utf8 htmlentities, utf-8 html entities, htmlentities php utf8, htmlentities() charset, html entities utf-8, utf 8 htmlentities, htmlentities und utf8, utf html entities, html entities utf 8, php utf-8 htmlentities

Alle Zeitangaben in WEZ +1. Es ist jetzt 08:38 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

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.