Problem mit sonderzeichen mit UTF-8

Alles, was sonst nirgend reinpasst...
Antworten
erzvolker58
User
User
Beiträge: 82
Registriert: So 21.Feb, 2016 19:47
Wohnort: Erzgebirge

Problem mit sonderzeichen mit UTF-8

Beitrag von erzvolker58 » Di 15.Mär, 2016 09:01

ich habe ein problem beim absenden von einem formular mit sonderzeichen
Fuchsie 'Waldi'
so geht es
Fuchsie Waldi
so schaut das im moment aus

Code: Alles auswählen

echo "<input type='text' name='titel1_aendern' value='".htmlentities(utf8_encode($row->titel1), ENT_QUOTES)."' size='30'>";
fehlermeldung
web: update
titel: Fuchsie 'Waldi'Konnte Termine nicht ändern, weil: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Freundeskreis Saar-Pfalz'. Ständig kommen neue Sorten hinzu, werden untereina' at line 1
Danke und viele Grüße

volker

erzvolker58
User
User
Beiträge: 82
Registriert: So 21.Feb, 2016 19:47
Wohnort: Erzgebirge

Re: Problem mit sonderzeichen mit UTF-8

Beitrag von erzvolker58 » Di 22.Mär, 2016 05:51

mir ist da noch etwas eingefallen, in der phpbb2 hatte ich da mal auch ein problem mit dem ' , da hattest du was geändert, ging um die Betreffzeile, finde es aber nicht mehr
Danke und viele Grüße

volker

Benutzeravatar
oxpus
Administrator
Administrator
Beiträge: 29099
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Re: Problem mit sonderzeichen mit UTF-8

Beitrag von oxpus » Di 22.Mär, 2016 07:06

Um ein ' oder " beim Speichern korrekt in einem eigene Script uu verwenden, muss der String maskiert werden.
Die einfachste und unsicherste Methode wäre

Code: Alles auswählen

$varible = trim(addslashes($variable));
DIe Methode, die die Datenbank bereits mitliefert, schon deutlich besser:

Code: Alles auswählen

$variable = mysql_real_escape_string($varible);
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per ICQ, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per ICQ, Email or PM. Each unasked message will be ignored!

erzvolker58
User
User
Beiträge: 82
Registriert: So 21.Feb, 2016 19:47
Wohnort: Erzgebirge

Re: Problem mit sonderzeichen mit UTF-8

Beitrag von erzvolker58 » Fr 01.Apr, 2016 05:33

dbeintrag.zip
(1.43 KiB) 57-mal heruntergeladen
hallo, wo muss ich das ändern, kann da nicht so richtig was finden
Danke und viele Grüße

volker

Benutzeravatar
oxpus
Administrator
Administrator
Beiträge: 29099
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Re: Problem mit sonderzeichen mit UTF-8

Beitrag von oxpus » Fr 01.Apr, 2016 16:16

Jede Variable, die aus $_POST übernommen wird und letztlich in der Datenbank landen soll ist zu konvertieren.
Und das sind hier auch wieder eine ganze Menge...
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per ICQ, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per ICQ, Email or PM. Each unasked message will be ignored!

erzvolker58
User
User
Beiträge: 82
Registriert: So 21.Feb, 2016 19:47
Wohnort: Erzgebirge

Re: Problem mit sonderzeichen mit UTF-8

Beitrag von erzvolker58 » Fr 01.Apr, 2016 17:27

also du meinst das so
aus

Code: Alles auswählen

$tag_aendern = $_POST["tag_aendern"];
so ändern

Code: Alles auswählen

$tag_aendern = (isset($_POST["tag_aendern"])) ? mysql_real_escape_string($_POST["tag_aendern"]): '';
Danke und viele Grüße

volker

Benutzeravatar
oxpus
Administrator
Administrator
Beiträge: 29099
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Re: Problem mit sonderzeichen mit UTF-8

Beitrag von oxpus » Fr 01.Apr, 2016 20:08

Ja, genau so.
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per ICQ, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per ICQ, Email or PM. Each unasked message will be ignored!

erzvolker58
User
User
Beiträge: 82
Registriert: So 21.Feb, 2016 19:47
Wohnort: Erzgebirge

Re: Problem mit sonderzeichen mit UTF-8

Beitrag von erzvolker58 » Fr 20.Mai, 2016 07:59

hallo, ich habe das problem immer noch, habe das also so geändert, aber wenn ich ein text sende, zb. für kommt für in der datenbank an, was mach ich falsch?

im formular habe ich die zeile so drinn

Code: Alles auswählen

maxlength='10000' value='' class='purple'>".htmlentities(utf8_encode($row->text1), ENT_QUOTES)."</textarea>
Danke und viele Grüße

volker

Benutzeravatar
oxpus
Administrator
Administrator
Beiträge: 29099
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Re: Problem mit sonderzeichen mit UTF-8

Beitrag von oxpus » Fr 20.Mai, 2016 16:48

Es ist unwichtig, wie es in der Datenbank ankommt. Es muss nur beim Anzeigen und Bearbeiten korrekt kodiert sein.

Code: Alles auswählen

htmlentities(utf8_encode($row->text1), ENT_QUOTES)
wäre schon korrekt, dann müsste aber auch beim Auslesen aus der Datenbank das ganze umgekehrt werden, um wieder korrekte Zeichen zu erhalten.
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per ICQ, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per ICQ, Email or PM. Each unasked message will be ignored!

erzvolker58
User
User
Beiträge: 82
Registriert: So 21.Feb, 2016 19:47
Wohnort: Erzgebirge

Re: Problem mit sonderzeichen mit UTF-8

Beitrag von erzvolker58 » Fr 20.Mai, 2016 21:24

es zeigt mir immer noch die seite so an

http://www.deutsche-fuchsien-ges.de/fk/ ... 3&mitte=fk ??
Danke und viele Grüße

volker

Benutzeravatar
oxpus
Administrator
Administrator
Beiträge: 29099
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Re: Problem mit sonderzeichen mit UTF-8

Beitrag von oxpus » Sa 21.Mai, 2016 00:26

Na ja, du hast ja auch einen gemischten Inhalt.
Die alten Einträge sind noch nicht auf den neuen Stand, die neueren aber schon.
Eines kann man anzeigen, aber nicht beide parallel.
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per ICQ, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per ICQ, Email or PM. Each unasked message will be ignored!

erzvolker58
User
User
Beiträge: 82
Registriert: So 21.Feb, 2016 19:47
Wohnort: Erzgebirge

Re: Problem mit sonderzeichen mit UTF-8

Beitrag von erzvolker58 » Sa 21.Mai, 2016 05:26

wenn ich in der datenbank die umlaute richtig eintrage, werden sie auch richtig angezeigt. bekomme die aber nicht richtig übertragen.

Code: Alles auswählen

<?php
session_start();

if($_SESSION[passwd] != "ja")
{	
	session_destroy();
	echo "Sie sind nicht eingeloggt!<meta http-equiv = 'refresh' content='1; URL=./index.php'>";
}
elseif($_SESSION[passwd] == "ja"){
	
if(!isset($_SESSION[session_ID])) {
$_SESSION[session_ID] = session_id();
$_SESSION[uhrzeit]=date("Y-m-d H:i:s");

}
}
?>
<?php
include("./data/data.php");
mysql_select_db($db);	

$webtext1 = (isset($_POST["webtext1"])) ? mysql_real_escape_string($_POST["webtext1"]): '';
$webtext2 = (isset($_POST["webtext2"])) ? mysql_real_escape_string($_POST["webtext2"]): '';
$titel1 = (isset($_POST["titel1_aendern"])) ? mysql_real_escape_string($_POST["titel1_aendern"]): '';
$titel2 = (isset($_POST["titel2_aendern"])) ? mysql_real_escape_string($_POST["titel2_aendern"]): '';
$web = (isset($_POST["web"])) ? mysql_real_escape_string($_POST["web"]): '';
$webseite = (isset($_POST["webseite"])) ? mysql_real_escape_string($_POST["webseite"]): '';
echo "web: ".$web."<br>titel: ".$titel1;

if($web == "neu") {
	
		$web_neu = "INSERT INTO freundeskreise_web(fid_web, text1, text2, titel1, titel2, website) ";
		$web_neu .= "VALUES('$_SESSION[fk_id]', '$webtext1', '$webtext2', '$titel1', '$titel2', '$webseite') ";

		$web_eintragen = mysql_query($web_neu, $con)
		or die ("Konnte Termine nicht eintragen, weil: ". mysql_error());

		echo "Sie werden gleich weitergeleitet !<meta http-equiv = 'refresh' content='1; URL=./webeingabe.php'>";

}

elseif($web == "update") {
	
	$web_aendern = "UPDATE freundeskreise_web SET text1 = '$webtext1', text2 = '$webtext2', titel1 = '$titel1', titel2 = '$titel2', ";
	$web_aendern .= "website = '$webseite' WHERE fid_web ='$_SESSION[fk_id]'";

		$web_aendern2 = mysql_query($web_aendern, $con)
		or die ("Konnte Termine nicht ändern, weil: ". mysql_error());
	
	echo "Sie werden gleich weitergeleitet !<meta http-equiv = 'refresh' content='1; URL=./webeingabe.php'>";
	
}

mysql_close($con);
?>
Danke und viele Grüße

volker

Benutzeravatar
oxpus
Administrator
Administrator
Beiträge: 29099
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Re: Problem mit sonderzeichen mit UTF-8

Beitrag von oxpus » Sa 21.Mai, 2016 10:49

Die Datenbanktabellen sind auf UTF-8 eingestellt, richtig?
Dazu ist auch die Webseite auf UTF-8 umgestellt, oder?

Dann solltest du vor dem Speichern auch utf8_encode nehmen, damit die Werte korrekt in die Datenbank geschrieben werden (dann aber auch mit "Sonderzeichen", was völlig normal und auch nötig ist!).
Und zur Anzeige kann man dann entweder, wie die Daten eben ausgelesen werden, mit utf8_decode wieder anzeigen, bzw. diesen Schritt auch wieder weglassen.

Ggf. wenn das nichts nutzt, die Funktionen umgekehrt verwenden, also utf8_decode zum schreiben und utf8_encode zum auslesen.

Wie gesagt:
Alte Einträge müssten einmal überarbeitet werden, um korrekt in UTF-8 angezeigt und verwendet zu werden.
Die neuen Einträge sollten aber schon mal korrekt sein, damit man die alten überhaupt bearbeiten könnte.
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per ICQ, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per ICQ, Email or PM. Each unasked message will be ignored!

erzvolker58
User
User
Beiträge: 82
Registriert: So 21.Feb, 2016 19:47
Wohnort: Erzgebirge

Re: Problem mit sonderzeichen mit UTF-8

Beitrag von erzvolker58 » Sa 21.Mai, 2016 19:08

Code: Alles auswählen

<table width='100%'>
<tr>
<td align='center'>";
//echo "In else";

if(!empty($row->bild1)){
echo "<img src='../fk/termine/web/".$_SESSION[fk_id]."_oben.jpeg' style='border: 1px solid #000000;' Alt=''>";
}
else {
echo "<img src='../fk/termine/web/dummy2.jpeg' style='border: 1px solid #C71585;' Alt=''>";
}

echo "<br>";

if(!empty($row->titel1)){
echo "<input type='text' name='titel1_aendern' value='".htmlentities($row->titel1, ENT_QUOTES)."' size='30'>";
}
else {
echo "<input type='text' name='titel1_aendern' value='Bildunterschrift 1' size='30'>";
}

echo "
</td>
<td width='270px' class='norm_fett'>
<textarea name='webtext1' cols='38' rows='12' wrap='physical' 
    maxlength='10000' value='' class='purple'>".htmlentities(utf8_encode($row->text2), ENT_QUOTES)."</textarea>
</td>
</tr>

<tr>
<td width='270px' class='norm_fett'>
<textarea name='webtext2' cols='38' rows='12' wrap='physical' 
    maxlength='10000' value='' class='purple'>".htmlentities(utf8_encode($row->text2), ENT_QUOTES)."</textarea>
</td>
<td align='center'>";

if(!empty($row->bild2)){
echo "<img src='../fk/termine/web/".$_SESSION[fk_id]."_unten.jpeg' style='border: 1px solid #000000;' Alt=''>";
}
else {
echo "<img src='../fk/termine/web/dummy1.jpeg' style='border: 1px solid #C71585;' Alt=''>";
}

echo "<br>";

if(!empty($row->titel2)){
echo "<input type='text' name='titel2_aendern' value='".htmlentities($row->titel2, ENT_QUOTES)."' size='30'>";
}
else {
echo "<input type='text' name='titel2_aendern' value='Bildunterschrift 2' size='30' >";
}

echo "
<input type='hidden' name='web' value='update'>
</td>
</tr>";
titel geht, text geht nicht, habe das aber auch schon umgekert versucht, werde noch wahnsinnig
Danke und viele Grüße

volker

Benutzeravatar
oxpus
Administrator
Administrator
Beiträge: 29099
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Re: Problem mit sonderzeichen mit UTF-8

Beitrag von oxpus » Sa 21.Mai, 2016 20:12

Dann versuch es doch mal ohne utf8_encode oder utf8_decode ;-)
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per ICQ, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per ICQ, Email or PM. Each unasked message will be ignored!

erzvolker58
User
User
Beiträge: 82
Registriert: So 21.Feb, 2016 19:47
Wohnort: Erzgebirge

Re: Problem mit sonderzeichen mit UTF-8

Beitrag von erzvolker58 » Sa 21.Mai, 2016 20:46

es will nicht, die datenbank steht auf utf8_general_ci
Danke und viele Grüße

volker

Benutzeravatar
oxpus
Administrator
Administrator
Beiträge: 29099
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Re: Problem mit sonderzeichen mit UTF-8

Beitrag von oxpus » Sa 21.Mai, 2016 22:03

Na, es muss sich doch etwas ändern, wenn du den Text mit oder ohne Konvertierung anzeigen lässt...
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per ICQ, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per ICQ, Email or PM. Each unasked message will be ignored!

erzvolker58
User
User
Beiträge: 82
Registriert: So 21.Feb, 2016 19:47
Wohnort: Erzgebirge

Re: Problem mit sonderzeichen mit UTF-8

Beitrag von erzvolker58 » So 22.Mai, 2016 03:37

ja, es zeigt garnichts mehr an oder halt äöü
Danke und viele Grüße

volker

Benutzeravatar
oxpus
Administrator
Administrator
Beiträge: 29099
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Re: Problem mit sonderzeichen mit UTF-8

Beitrag von oxpus » So 22.Mai, 2016 13:00

Noch mal rekaputiliert:
Die neuen oder neu geänderten Einträge werden so oder so nicht korrekt angezeigt?

Zunächst einmal die Fakten:
Die Seite wird als UTF-8-kodiert angezeigt.
Damit sollten alle Inhalte, die dargestellt oder auch über ein Formular abgesendet werden, als utf-8-kodierte Zeichen in der Datenbank landen.
Jetzt sollte man also nicht noch einmal mit htmlentities und utf8_encode die Zeichenkodierung ändern, da ja bereits utf-8 vorliegt.

Wenn das Speichern ohne vorherige Konvertierung der Zeichen nicht sauber klappt, sollte man zunächst dort mit utf8_decode oder utf8_encode die Zeichen vor dem Speichern in der Datenbank ändern, damit diese dort auch korrekt ankommen.
Denn auch wenn die Tabelle auf utf8 eingestellt ist, heisst das noch lange nicht, dass die Inhalte auch korrekt unterstützt werden. Das kommt nämlich dann auch noch u. a. auf den Treiber des Datenbankservers und dem Zeichensatz des Datenbankschemas und diversen anderen Dingen an.

Aber zurück zum Thema:
Wie werden die Inhalte im Formular zum ändern angezeigt?
Dort bereits mit den gesamten Sonderzeichen?
Und was passiert, wenn du den Text dann erst einmal wieder manuell änderst?
Wird der dann weiterhin "verstümmelt", wenn du ihn das nächste Mal anzeigen lässt oder bearbeiten willst?

Wie gesagt:
Die Webseite wird als utf8 angezeigt, daher sollte zunächst keine weitere Konvertierung vorgenommen werden.
Das betrifft aber dann auch nur alle neuen oder neu gespeicherten Texte, nicht bereits gespeicherte Texte, die vielleicht noch nicht in UTF-8 vorliegen!
Die hatte ich ja bereits einmal versucht anzupassen, aber dennoch muss zumindest jeder neue Eintrag schon mal sauber laufen.
Entferne daher alles, was irgendwas konvertiert. Also wie oben genannt ohne htmlentities und utf8_encode im Eingabeformular, wenn wenn dort schon Mist reinkommt, wird es hinten nicht besser, wenn die Daten übernommen und gespeichert werden sollen.
Im Formular die Texte also nicht konvertieren. Wenn würde ich das eher zum Speichern in die Datenbank machen (also utf8_decode), damit die Texte dann doch erst mal als latin-1 gespeichert werden.
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per ICQ, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per ICQ, Email or PM. Each unasked message will be ignored!

erzvolker58
User
User
Beiträge: 82
Registriert: So 21.Feb, 2016 19:47
Wohnort: Erzgebirge

Re: Problem mit sonderzeichen mit UTF-8

Beitrag von erzvolker58 » Mo 23.Mai, 2016 10:26

hast PN
Danke und viele Grüße

volker

erzvolker58
User
User
Beiträge: 82
Registriert: So 21.Feb, 2016 19:47
Wohnort: Erzgebirge

Re: Problem mit sonderzeichen mit UTF-8

Beitrag von erzvolker58 » Fr 27.Mai, 2016 12:39

hallo karsten, habe es hinbekommen, danke :)

noch eine frage, wie bekomme ich in solch einen text ein zeilenumbruch rein, html geht da ja nicht ??
Danke und viele Grüße

volker

Benutzeravatar
oxpus
Administrator
Administrator
Beiträge: 29099
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Re: Problem mit sonderzeichen mit UTF-8

Beitrag von oxpus » Fr 27.Mai, 2016 17:47

Entweder im Text einfach Enter für eine neue Zeile drücken oder <br />, bzw. im Code das Sonderzeichen \n
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per ICQ, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per ICQ, Email or PM. Each unasked message will be ignored!

erzvolker58
User
User
Beiträge: 82
Registriert: So 21.Feb, 2016 19:47
Wohnort: Erzgebirge

Re: Problem mit sonderzeichen mit UTF-8

Beitrag von erzvolker58 » Fr 27.Mai, 2016 19:59

hatte da mal nl2br gelöscht, nun wieder rein gemacht, und es geht :)

Code: Alles auswählen

echo nl2br(htmlentities($row->text2, ENT_QUOTES));
Danke und viele Grüße

volker

Antworten