Polnische Sonderzeichen ( UTF-8 )

Warum Debian und/oder eine seiner Spielarten? Was muss ich vorher wissen? Wo geht es nach der Installation weiter?
Antworten
Daether
Beiträge: 110
Registriert: 12.05.2006 18:37:04
Kontaktdaten:

Polnische Sonderzeichen ( UTF-8 )

Beitrag von Daether » 13.07.2009 15:43:00

Moin Moin,
ich verzweifle gerade an Debian.

Ich habe hier einen DebianServer ( Etch ) auf dem folgendes läuft :
Apache2
PHP5
MYSQL

Ich habe nun ein Formular in welches ein Wort eingetragen wird, mit polnischen Sonderzeichen ( z.B. Łączymy ). Dieses wird an ein PHP-Skript übergeben welches wiederum das Wort in eine Datenbank schreibt.
Das Ergebnis ist bei einem "echo" und in der Datenbank folgendes :
??czymy

Im Apache habe ich im virtuellen Host folgendes eingestellt :

Code: Alles auswählen

AddDefaultCharset utf-8
php_admin_value default_charset utf-8
Im html folgende meta-tag im Head :

Code: Alles auswählen

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Mit dpkg-reconfigure locales habe ich die Sprache auf dem Debianserver auf de_DE.UTF-8 gestellt und zusätzlich pl_PL.UTF-8 installiert.

Trotzdem klappt weder die Ausgabe des Textes und das einfügen in die Datenbank nicht.
??czymy

Hat jemand eine Idee was noch geändert werden muss ?

MfG Daether

crazyed

Re: Polnische Sonderzeichen ( UTF-8 )

Beitrag von crazyed » 13.07.2009 19:46:06

Ist die Datenbank für UTF-8 angelegt? Kenne mich allerdings mit mysql nicht aus, nur bei postgresql ist das auch mitentscheidend.

Benutzeravatar
Abraxax
Beiträge: 774
Registriert: 22.03.2004 10:18:42
Wohnort: Rheinkreis-Neuss.NRW.DE

Re: Polnische Sonderzeichen ( UTF-8 )

Beitrag von Abraxax » 13.07.2009 20:38:06

Auch bei MySQL ist dies elementar.
Die Tabellen müssen UTF8 unterstützen.
Die Verbindung zur Datenbank muss auch über UTF8 erfolgen.

Dann klappt es problemlos.

Daether
Beiträge: 110
Registriert: 12.05.2006 18:37:04
Kontaktdaten:

Re: Polnische Sonderzeichen ( UTF-8 )

Beitrag von Daether » 14.07.2009 08:28:56

Moin Moin,
die Tabelle und die einzelnen Spalten sind auf UTF-8 umgestellt.

Sofern ich den INSERT-Befehl nicht mit der Variable aus dem Formular fülle, sondern direkt mit polnischen Zeichen, funktioniert alles.

Allerdings klappt es nicht wenn ich es durchs Formular gebe. Dann ist auch jede Ausgabe ( print ) mit ?? belegt.
Ich habe ebenfalls schon utf-8_encode, htmlenteties, etc. versucht.

MfG Daether

Benutzeravatar
Abraxax
Beiträge: 774
Registriert: 22.03.2004 10:18:42
Wohnort: Rheinkreis-Neuss.NRW.DE

Re: Polnische Sonderzeichen ( UTF-8 )

Beitrag von Abraxax » 14.07.2009 08:33:01

Sofern ich den INSERT-Befehl nicht mit der Variable aus dem Formular fülle, sondern direkt mit polnischen Zeichen, funktioniert alles.
Hast du das mit phpmyadmin oder mit deinem Script in die Datenbank geschrieben?
Hast du das charset für die Verbindung zur Datenbank auf UTF8 definiert?


Ist die Seite des Forumulars seitens des Browsers als UTF8 erkannt worden? (FF -> Page Info)
Hast du eine Testseite online?

Daether
Beiträge: 110
Registriert: 12.05.2006 18:37:04
Kontaktdaten:

Re: Polnische Sonderzeichen ( UTF-8 )

Beitrag von Daether » 14.07.2009 08:49:41

Code: Alles auswählen

		print( htmlentities ($_POST["mail"] ,ENT_COMPAT , "UTF-8" ) )  ;
		print( html_entity_decode ($_POST["mail"] ,ENT_COMPAT , "UTF-8" ) )  ;
		print( htmlspecialchars ($_POST["mail"] ,ENT_COMPAT , "UTF-8" ) )  ;
		print( htmlspecialchars_decode ($_POST["mail"] ) ) ;
		print( utf8_encode ($_POST["mail"] ) )  ;
		print( utf8_decode ($_POST["mail"] ) )  ;
		
		$mailadresse = $_POST["mail"] ;
				
			$sql =  "INSERT INTO newsletter_pl_adressen
										 ( mail , aktiv )
										 VALUES
										 ( '$mailadresse' , '0' ) "  ;
			mysql_query ( $sql , $db_handle ) ;
Das ist der Code. $_POST["mail"] muss man aber nicht wörtlich nehmen, in das Feld trage ich z.Zt. die polnischen Sonderzeichen zum testen ein.
Der Code produziert sowohl in der DB als auch im Print die Fragezeichen.
Folgendes Insert funktioniert :

Code: Alles auswählen

"INSERT INTO newsletter_pl_adressen
										 ( mail , aktiv )
										 VALUES
										 ( 'Łączymy ' , '0' ) "  ;
Ich gehe nicht davon aus, dass die Datenbank das Problem ist, wenn dem so wäre, würde der Code schließlich auch nicht gehen.

Die Seite ist in UTF-8 definiert ( Seiteneigenschaften bestätigt dies ).

Die Seite ist leider nicht von außerhalb erreichbar.


//EDIT:
Hab eben nochmals folgendes hinzugefügt :

Code: Alles auswählen

		$handle =fopen("testify.txt" , "w+" ) ;
		fwrite ( $handle , $_POST["mail"] ) ;
In der Datei tauchen auch wieder die Fragezeichen anstatt der polnischen Sonderzeichen auf.

Benutzeravatar
Abraxax
Beiträge: 774
Registriert: 22.03.2004 10:18:42
Wohnort: Rheinkreis-Neuss.NRW.DE

Re: Polnische Sonderzeichen ( UTF-8 )

Beitrag von Abraxax » 14.07.2009 10:23:52

Sorry .. aber nochmals die Frage ... Wie baust du deine DB Verbindung auf? Das ist der einscheidende Punkt.

Daether
Beiträge: 110
Registriert: 12.05.2006 18:37:04
Kontaktdaten:

Re: Polnische Sonderzeichen ( UTF-8 )

Beitrag von Daether » 14.07.2009 10:37:41

Code: Alles auswählen

$db_handle = mysql_connect ( IP , datenbank , passwort );
Allerdings leigt das Problem nicht an der DB.
Wenn es an der DB liegen würde, könnte ich ja die richtigen Werte zumindest in die Datei schreiben !

Benutzeravatar
Abraxax
Beiträge: 774
Registriert: 22.03.2004 10:18:42
Wohnort: Rheinkreis-Neuss.NRW.DE

Re: Polnische Sonderzeichen ( UTF-8 )

Beitrag von Abraxax » 14.07.2009 10:41:28

Allerdings leigt das Problem nicht an der DB.
Nach mysql_connect() kommt irgendwann der INSERT?
Oder setzt du die Verbindung noch irgendwo auf UTF8?
Wenn es an der DB liegen würde, könnte ich ja die richtigen Werte zumindest in die Datei schreiben !
Handelt es sich um eine UTF8 Datei?

Daether
Beiträge: 110
Registriert: 12.05.2006 18:37:04
Kontaktdaten:

Re: Polnische Sonderzeichen ( UTF-8 )

Beitrag von Daether » 14.07.2009 10:43:50

Moin,
die Datei wird durch PHP erst angelegt.

Zwischen Insert und mysql_connect() ändere ich nichts an der Verbidnung ( außer select_db ).

Benutzeravatar
Abraxax
Beiträge: 774
Registriert: 22.03.2004 10:18:42
Wohnort: Rheinkreis-Neuss.NRW.DE

Re: Polnische Sonderzeichen ( UTF-8 )

Beitrag von Abraxax » 14.07.2009 10:47:08

Ok. D.h. du setzt die Verbindung nicht explizit auf UTF8 ...

Setze bitte diese beiden SQLs nach dem Verbindungsaufbau oder dem Auswählen der DB an MySQL.

Code: Alles auswählen

SET NAMES "utf8"
SET CHARACTER SET "utf8"
Kannst du bitte auch mal einen Dump der CREATE TABLE posten ...

Daether
Beiträge: 110
Registriert: 12.05.2006 18:37:04
Kontaktdaten:

Re: Polnische Sonderzeichen ( UTF-8 )

Beitrag von Daether » 14.07.2009 11:04:58

Code: Alles auswählen

CREATE TABLE `newsletter_pl_adressen` (
  `ID` int(11) NOT NULL auto_increment,
  `mail` varchar(60) collate utf8_polish_ci NOT NULL,
  `aktiv` tinyint(1) NOT NULL,
  `vorname` varchar(30) character set latin1 NOT NULL,
  `nachname` varchar(30) character set latin1 NOT NULL,
  PRIMARY KEY  (`ID`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci AUTO_INCREMENT=63 ;

Code: Alles auswählen

mysql_select_db ( "makestardslde" , $db_handle ) ;

mysql_query ( "SET NAMES 'utf8'"  , $db_handle ) ;
mysql_query ( "SET CHARACTER SET 'utf8'"  , $db_handle ) ;
Hat leider auch nicht den Erfolg gebracht.

Benutzeravatar
Abraxax
Beiträge: 774
Registriert: 22.03.2004 10:18:42
Wohnort: Rheinkreis-Neuss.NRW.DE

Re: Polnische Sonderzeichen ( UTF-8 )

Beitrag von Abraxax » 14.07.2009 12:03:07

Dein Problem habe ich entsprechend mit einem Testscript nachvollzogen.

Ich leite dich jetzt ins PHP-Resource-Forum weiter. ;-)
http://www.php-resource.de/forum/php-de ... post620946

Antworten