SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Das Zend Framework

Das Zend Framework zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP Grundlagen
Hilfe Community Kalender Heutige Beiträge Suchen

PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 02.01.2011, 10:28:04
knight1 knight1 ist offline
Junior Member
 
Registriert seit: May 2003
Ort: Trier
Alter: 47
Beiträge: 310
knight1 eine Nachricht über MSN schicken knight1 eine Nachricht über Skype™ schicken
Falsche Darstellung von Sonderzeichen

Hi SELFPHP-Com,
habe da ein Problem mit der Darstellung von nicht Lateinischen Zeichen und Sonderzeichen.
Ich nutze zur Umwandlung vor der Darstellung die Funktion htmlentities().

Hier mal der Teil des Codes.

HTML-Code:
 <td style="text-align:center;" id="content_country_name_<? echo $lang_code; ?>_short_cell"><fieldset style="border-left:none; border-bottom:none;"><legend><? echo $language['private_area']['forms']['edit']['country']['country_name']['short']; ?></legend><input type="text" name="country_name[<? echo $lang_code; ?>][short]" value="<? echo htmlentities($country['country'][$lang_code]['country_name-short'],ENT_QUOTES,$language['common']['language']['charset'],FALSE); ?>" style="text-align:center;" maxlength="255" id="content_country_name_<? echo $lang_code; ?>_short_input" dir="<? echo $language['common']['language']['dir']; ?>"></fieldset></td>
 <td style="width:2px;"><img src="../images/spacer.gif" style="width:2px;"></td>
 <td style="text-align:center;" id="content_country_name_<? echo $lang_code; ?>_long_cell"><fieldset style="border-right:none; border-bottom:none;"><legend><? echo $language['private_area']['forms']['edit']['country']['country_name']['long']; ?></legend><input type="text" name="country_name[<? echo $lang_code; ?>][long]" value="<? echo htmlentities($country['country'][$lang_code]['country_name-long'],ENT_QUOTES,$language['common']['language']['charset'],FALSE); ?>" style="text-align:center;" maxlength="255" id="content_country_name_<? echo $lang_code; ?>_long_input" dir="<? echo $language['common']['language']['dir']; ?>"></fieldset></td>
Die Verbindung zum Datenbankserver wird ganz normal hergestellt.
Die Tabellen und einzelnen Felder sind mit utf8_unicode_ci.
Nach dem Aufbauen der Verbindung setze ich den Verbindungs-Zeichensatz auf UTF8 falls dies nicht der Fall ist.

PHP-Code:
$mysqli = new mysqli(MYSQL_HOST,MYSQL_USER,MYSQL_PW,MYSQL_DB,MYSQL_PORT);
if (
$mysqli->character_set_name() != "utf8") { $mysqli->set_charset("utf8"); } 
Hier auch mal ein Screenshot wie die falsche Darstellung aussieht.
http://www.kaikordel.de/falsche_zeichendarstellung.jpg

Im Manual finde ich nichts darüber dass mal den Cache leeren muss oder sowas.

Wenn ich die Ausgabe ohne htmlentities() mache erfolget die Ausgabe 1zu1.

Ich möchte aber immer sicherstellen dass die Eingaben nicht mit meinem HTML-Code kollidieren.

Irgendwie habe ich den Verdacht dass es an htmlentities() liegt.

Hat jemand eine Idee woran das liegen kann?


Kai aka Knight1
PS: Wieso sind denn keine Anhänge und [img]-Tags mehr möglich?
__________________
Please visit: http://www.kaikordel.de
Mit Zitat antworten
  #2  
Alt 02.01.2011, 10:59:03
DokuLeseHemmung DokuLeseHemmung ist offline
SELFPHP Experte
 
Registriert seit: Jun 2008
Alter: 15
Beiträge: 2.269
AW: Falsche Darstellung von Sonderzeichen

1. utf8_unicode_ci. ist kein Charset sondern eine Kollation
2. Versehe also auch die Tabelle/Spalten mit dem richtigen Charset
3. htmlentities()? htmlspezialchars()!! Und auch dort kann man einen Charset angeben
4. Sendest du den richtigen utf-8 Content-type Header?
5. Den Charset auch im Formular angegeben
6, Den Charset auch im HTML Head richtig angegeben?
7. <? echo $lang_code; ?> igitt! Entweder so:<?php echo $lang_code; ?> oder so:<?= $lang_code; ?> Aber nicht so ein Mix.
Mit Zitat antworten
  #3  
Alt 02.01.2011, 12:03:28
knight1 knight1 ist offline
Junior Member
 
Registriert seit: May 2003
Ort: Trier
Alter: 47
Beiträge: 310
knight1 eine Nachricht über MSN schicken knight1 eine Nachricht über Skype™ schicken
AW: Falsche Darstellung von Sonderzeichen

Zitat:
Zitat von DokuLeseHemmung Beitrag anzeigen
1. utf8_unicode_ci. ist kein Charset sondern eine Kollation
...
UTF8 ist der Zeichensatz;
unicode ist die Kollation
ci ist die Sortierreihenfolge
So steht's zumindest im MySQL-Manual.

Zitat:
Zitat von DokuLeseHemmung Beitrag anzeigen
...
2. Versehe also auch die Tabelle/Spalten mit dem richtigen Charset
...
In PHPMyAdmin lässt sich nur die Kollation einstellen. Dort habe ich die bereits genannte eingetstellt. Bin am überlegen ob ich nicht auf utf8_general_ci umstelle.

Zitat:
Zitat von DokuLeseHemmung Beitrag anzeigen
...
3. htmlentities()? htmlspezialchars()!! Und auch dort kann man einen Charset angeben
...
Habe ich. Siehe mein HTML-Beispiel aus meinem Eröffnungs-Thread und das Array $language['common']['language']['charset']

Zitat:
Zitat von DokuLeseHemmung Beitrag anzeigen
...
4. Sendest du den richtigen utf-8 Content-type Header?
...
Nicht mit PHP.

Zitat:
Zitat von DokuLeseHemmung Beitrag anzeigen
...
5. Den Charset auch im Formular angegeben
...
Hilft nichts.

Zitat:
Zitat von DokuLeseHemmung Beitrag anzeigen
...
6, Den Charset auch im HTML Head richtig angegeben?
...
Das passiert in jeder HTML-Ausgabe mit
HTML-Code:
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
Zitat:
Zitat von DokuLeseHemmung Beitrag anzeigen
...
7. <? echo $lang_code; ?> igitt! Entweder so:<?php echo $lang_code; ?> oder so:<?= $lang_code; ?> Aber nicht so ein Mix.
Deine Meinung.



Kai aka Knight1
__________________
Please visit: http://www.kaikordel.de
Mit Zitat antworten
  #4  
Alt 02.01.2011, 12:15:37
DokuLeseHemmung DokuLeseHemmung ist offline
SELFPHP Experte
 
Registriert seit: Jun 2008
Alter: 15
Beiträge: 2.269
AW: Falsche Darstellung von Sonderzeichen

Zitat:
UTF8 ist der Zeichensatz;
unicode ist die Kollation
ci ist die Sortierreihenfolge
So steht's zumindest im MySQL-Manual.
Ich habe gesagt: "utf8_unicode_ci ist kein Charset!"
Und dabei bleibts.
Nochmal das Handbuch lesen.

Zitat:
ci ist die Sortierreihenfolge
CI heißt "Case Ignore"
Übersetzt: Ignoriere groß/klein Schreibung
Nochmal das Handbuch lesen.

Zitat:
Nicht mit PHP.
Warum nicht?
Tu das.

Zitat:
In PHPMyAdmin lässt sich nur die Kollation einstellen.
Falsch.


Zitat:
Bin am überlegen ob ich nicht auf utf8_general_ci umstelle.
Ist auch kein Charset.
Betrifft nur suchen und sortieren.
Nochmal das Handbuch lesen.

Zitat:
Hilft nichts.
Ist aber trotzdem empfehlenswert!
Also machen.


Zitat:
Deine Meinung.
Natürlich!
Und wie immer habe ich mit meinen Meinungen, so auch hier, recht!
Mit Zitat antworten
  #5  
Alt 02.01.2011, 15:28:21
knight1 knight1 ist offline
Junior Member
 
Registriert seit: May 2003
Ort: Trier
Alter: 47
Beiträge: 310
knight1 eine Nachricht über MSN schicken knight1 eine Nachricht über Skype™ schicken
AW: Falsche Darstellung von Sonderzeichen

Ich glaube Du hast es nicht ganz verstanden wann der Fehler auftritt. Vielleicht passt auch meine Erklärung nicht.

Die falsche Darstellung erfolgt, siehe Screenshot in meinem Eröffnungsthread, nur in dem englischen Bereich und auch nur nachdem der jeweilige String durch die Funktion htmlentities() geschickt wurde. Wird die Funktion nicht verwendet so stimmt die Ausgabe.
Bei der Ausgabe in dem deutschen Bereich stimmt die Ausgabe trotz htmlentities().

Hier nochmal der Teil der "falschen" Quelltextausgabe:
http://www.kaikordel.de/falsche_zeic..._quelltext.jpg


Kai aka Knight1
__________________
Please visit: http://www.kaikordel.de
Mit Zitat antworten
  #6  
Alt 02.01.2011, 15:47:03
DokuLeseHemmung DokuLeseHemmung ist offline
SELFPHP Experte
 
Registriert seit: Jun 2008
Alter: 15
Beiträge: 2.269
AW: Falsche Darstellung von Sonderzeichen

Zitat:
Wird die Funktion nicht verwendet so stimmt die Ausgabe.
Die Funktion ist also kaputt?
Nee....
Sie muss allerdings mit utf-8 Strings gefüttert werden, wenn du ihr sagst, dass utf-8 vorliegt.

Zusätzlich(aber nicht die Ursache):
Zitat:
3. htmlentities()? htmlspezialchars()!! Und auch dort kann man einen Charset angeben
Du brauchst in utf-8 kein htmlentities()
htmlspezialchars() ist voll ausreichend.


Entweder nimmst du die Tipps von mir an, oder nicht.
Und wenn nicht, dann ist dir nicht zu helfen.
Mit Zitat antworten
  #7  
Alt 02.01.2011, 16:39:14
Benutzerbild von rarios
rarios rarios ist offline
Member
 
Registriert seit: Jun 2006
Beiträge: 655
AW: Falsche Darstellung von Sonderzeichen

Das hier ist das falsche Unterforum. Gehört eher in PHP Grundlagen.
Ist ja nur ein einfaches Charset-Problem...
__________________
Liebe Grüße
Mit Zitat antworten
  #8  
Alt 02.01.2011, 16:45:54
knight1 knight1 ist offline
Junior Member
 
Registriert seit: May 2003
Ort: Trier
Alter: 47
Beiträge: 310
knight1 eine Nachricht über MSN schicken knight1 eine Nachricht über Skype™ schicken
AW: Falsche Darstellung von Sonderzeichen

Zitat:
Zitat von DokuLeseHemmung Beitrag anzeigen
Die Funktion ist also kaputt?
...
Das habe ich nicht gesagt, obwohl sich mir der Verdacht aufdrängt dass durch die Nutzung in einer Schleife die Funktion ins "stolpern" geraten könnte.

Zitat:
Zitat von DokuLeseHemmung Beitrag anzeigen
...
Sie muss allerdings mit utf-8 Strings gefüttert werden, wenn du ihr sagst, dass utf-8 vorliegt.
...
Das mache ich aufejdenfall. Die Verbindung zum Datenbankserver ist auf UTF8 eingestellt. Und die Tabellen und Felder sind alle auf utf8 als Charset und utf8_unicode_ci als Kollation eingestellt.
Die Daten müssten doch dann im Resultset der Datenbankabfrage in UTF-8 codiert geliefert werden und dann in dieser Codierung innerhalb des PHP-Scripts zur Verfügung stehen.

Zitat:
Zitat von DokuLeseHemmung Beitrag anzeigen
...
Du brauchst in utf-8 kein htmlentities()
...
Und wenn ich, außer den HTML-Spezifischen Zeichen, auch noch die nicht Lateinischen Schriftzeichen umgewandelt haben möchte?

Ich habe mal auf htmlspecialchars() gewechselt. Es werden die HTML-Spezifischen Zeichen in allen Feldern umgewandelt.
Da frage ich mich, warum schafft es htmlentities() nicht auch bei den nicht Lateinischen Schriftzeichen?


Kai aka Knight1
__________________
Please visit: http://www.kaikordel.de
Mit Zitat antworten
  #9  
Alt 02.01.2011, 18:25:42
DokuLeseHemmung DokuLeseHemmung ist offline
SELFPHP Experte
 
Registriert seit: Jun 2008
Alter: 15
Beiträge: 2.269
AW: Falsche Darstellung von Sonderzeichen

Zitat:
Das habe ich nicht gesagt, obwohl sich mir der Verdacht aufdrängt dass durch die Nutzung in einer Schleife die Funktion ins "stolpern" geraten könnte.
Falscher Verdacht.

Zitat:
Das mache ich aufejdenfall.
Nein das tust du nicht! Oder du gibst einen falschen Zeichensatz an.
Beweis: Speichere die Daten in eine Datei und schau sie dir im Hexeditor an.


Zitat:
Und wenn ich, außer den HTML-Spezifischen Zeichen, auch noch die nicht Lateinischen Schriftzeichen umgewandelt haben möchte?
Und?
Wo ist das Problem?
Warum willst du die wandeln?


Zitat:
Da frage ich mich, warum schafft es htmlentities() nicht auch bei den nicht Lateinischen Schriftzeichen?
Weil du es mit Zeichensalat fütterst. Oder einen falschen Zeichensatz angibst.


Tipp:
Wenn du alles richtig machen würdest, dann würde es auch funktionieren!
Also zweifle nicht am PHP, sondern an dem was du da tust.
Mit Zitat antworten
  #10  
Alt 02.01.2011, 18:59:24
knight1 knight1 ist offline
Junior Member
 
Registriert seit: May 2003
Ort: Trier
Alter: 47
Beiträge: 310
knight1 eine Nachricht über MSN schicken knight1 eine Nachricht über Skype™ schicken
AW: Falsche Darstellung von Sonderzeichen

Habe mir gerade nochmal die Sprachdatei die ich zum Testen angelegt hatte. Normalerweiße sind nur die für die Deutsche Sprachausgabe vorhanden.
Um die dynamische Anzeige der Eingabefelder für die Ländernamen anhand der vorhandenen Sprachdateiein und Tabellen mit den Ländernnamen zu testen habe ich mir die Sprachdatei und entsprechende Datenanktabelle für Englisch angelegt.
Allerdings hatte ich nicht dran gedacht den Zeichensatz von iso-8859-1 auf UTF-8 zu ändern. Ich war aber die ganze Zeit der Meinung dass der Zeichensatz in der Sprachdatei korrekt ist.
Auf diese Weise wurde dann natürlich die ganze Zeit der falsche Zeichensatz übertragen.

So kann eine kleine Ursache eine große Wirkung haben.



Kai aka Knight1
__________________
Please visit: http://www.kaikordel.de
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

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

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Passwort ohne Sonderzeichen juergen PHP Grundlagen 6 01.09.2010 16:18:03
Darstellung Sonderzeichen utf-8 Wuzzer MySQLi/PDO/(MySQL) 13 22.06.2009 21:06:03
Fehlerhafte Darstellung der Sonderzeichen DarkLaser MySQLi/PDO/(MySQL) 2 11.04.2008 10:48:44
Komische Darstellung nach Sonderzeichen sfelder PHP Grundlagen 5 28.06.2007 00:18:47
Problem beim Mailen mit Sonderzeichen ... Wolfgagn Uhr PHP Grundlagen 9 11.10.2004 13:37:32


Alle Zeitangaben in WEZ +2. Es ist jetzt 09:55:12 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt