|
Das heitere Umlauteproblem... |
Beitrag Nr.: 1 |
Ich verzweifel grad mal wieder....
Folgendes Szenario:
Serversprache: UTF-8
Tabellenkollation: UFT-8
Spaltenkollation: UFT-8
PHP-Datei-Charset: UTF8
Eintrag in DB: Lustige Zeichen bei Umlaufen *seufz*
Frage: Was hab ich übersehen...
Selbst ne Umgehung klappt nicht so, wie ichs mir vorstelle:
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
|
//Überschrift und Text
$subject = "Herzlichen Glückwunsch zum Gebutrstag";
$body = "Wir wollten dir zum Geburtstag ein kleines Präsent überreichen und hoffen,$Bdass es dir bei uns gefällt!!$B$BWir wünschen dir alles Gute und freuen uns auf weitere geminsame Spielstunden mit Dir!";
//Mail INSERT //10 Gold -- Geschenk
$mail_insert="INSERT INTO corelith_characters.mail SET
id = '$id_plus1',
messageType = '0',
stationery = '61',
mailTemplateId = '0',
sender = '69',
receiver = '$reciver',
subject = '$subject',
body = '$body',
has_items = '1',
expire_time = '$timestamp_delete',
deliver_time = '$timestamp_deliver',
money = '100000',
cod = '0',
checked = '$checked' ";
$send_in = mysqli_query($db_chars, $mail_insert);
$do_utf8="UPDATE `corelith_characters.mail` SET
`subject` = REPLACE(`subject`,"ß", "ß"),
`subject` = REPLACE(`subject`, "ä", "ä"),
`subject` = REPLACE(`subject`, "ü", "ü"),
`subject` = REPLACE(`subject`, "ö", "ö"),
`subject` = REPLACE(`subject`, "Ä", "Ä"),
`subject` = REPLACE(`subject`, "Ãœ", "Ü"),
`subject` = REPLACE(`subject`, "Ö", "Ö"),
`subject` = REPLACE(`subject`, "€", "€"),
`body` = REPLACE(`body`,"ß", "ß"),
`body` = REPLACE(`body`, "ä", "ä"),
`body` = REPLACE(`body`, "ü", "ü"),
`body` = REPLACE(`body`, "ö", "ö"),
`body` = REPLACE(`body`, "Ä", "Ä"),
`body` = REPLACE(`body`, "Ãœ", "Ü"),
`body` = REPLACE(`body`, "Ö", "Ö"),
`body` = REPLACE(`body`, "€", "€")
WHERE id LIKE '$id_plus1'";
$utf8_in = mysqli_query($db_chars, $do_utf8); |
|
In die DB hauts mir ständig lustigen Zeichen anstatt die Umlaute....
Übrigens funktionieren htmlspecialchars und htmlentities bei den Srings leider auch nicht und auch mysqli_set_charset($db_chars, "utf8"); direkt nach der DB klappt nicht *seufz*
__________________
|
|
08.02.2021 14:18 |
|
|
|
ähmmm danke, aber janein, das ganze is en bisschen komplexer...:
pdo geht schonmal bei dem gameserver nicht, weil die core dann ärger macht.. kp warum...
also normaler connect, und dann der insert is auch bissel größer:
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
|
//Datenbank_CHARS
$db_chars = mysqli_connect("localhost", "blubber", "blahhhhh", "corelith_characters");
//id aus characters.mail
$id_out = "SELECT * FROM corelith_characters.mail";
$result_id = mysqli_query($db_chars, $id_out);
while ($ds = mysqli_fetch_object($result_id)) {
$res_id = $ds->id;
}
$id_plus1 = $res_id + 1;
//Überschrift und Text
//String-Encoding UTF8
$subject = "Herzlichen Glückwunsch zum Geburtstag";
$body = "Wir wollten dir ein kleines Zufalls-Geburtstagspräsent zukommen lassen, nebst ein bisschen Geld, und hoffen, dass es dir bei uns gefällt!!\r\n\nAlles Gute zum Geburtstag!!\r\n\nWir freuen uns auf eine noch lange, geminsame Spielzeit mit Dir!\r\n\n\nDein Corelith-Team";
//Mail INSERT
$mail_insert="INSERT INTO corelith_characters.mail SET
id = '$id_plus1',
messageType = '0',
stationery = '61',
mailTemplateId = '0',
sender = '69',
receiver = '$reciver',
subject = '$subject',
body = '$body',
has_items = '1',
expire_time = '$timestamp_delete',
deliver_time = '$timestamp_deliver',
money = '100000',
cod = '0',
checked = '$checked' ";
$send_in = mysqli_query($db_chars, $mail_insert); |
|
hab das derzeit umgeschrieben, damits ohne ü's und Co eght... aber würd mcih trotzdem interessieren, wie ich Umlaute in die DBs bekomme...
__________________
|
|
09.02.2021 20:48 |
|
|
haumi
Boardbetreiber
[meine Galerie]
Dabei seit: 06.06.2009
Beiträge: 3.442
Herkunft: NRW
Postid: 17263
|
|
Versuche das bitte mal.
Statt:
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
|
$mail_insert="INSERT INTO corelith_characters.mail SET
id = '$id_plus1',
messageType = '0',
stationery = '61',
mailTemplateId = '0',
sender = '69',
receiver = '$reciver',
subject = '$subject',
body = '$body',
has_items = '1',
expire_time = '$timestamp_delete',
deliver_time = '$timestamp_deliver',
money = '100000',
cod = '0',
checked = '$checked' ";
$send_in = mysqli_query($db_chars, $mail_insert); |
|
nimm mal:
code: |
1:
2:
|
$statement = $pdo->prepare("INSERT INTO corelith_characters.mail (id,messageType,stationery,mailTemplateId,sender,receiver.subject,body,has_items,expire_time,deliver_time, money,cod.checked) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
$statement->execute(array($id_plus1,0,61,0,69,$reciver,$subject,$body,1,$timestamp_delete,$timestamp_deliver,100000,0,$checked)); |
|
und in der class_db_mysql.php ersaetze:
code: |
1:
|
$pdo = new PDO('mysql:host=localhost;dbname='.$sqldb,$sqluser,$sqlpassword); |
|
durch:
code: |
1:
2:
3:
4:
5:
6:
7:
|
$pdo = new PDO(
'mysql:host=localhost;dbname='.$sqldb,
$sqluser,
$sqlpassword,
[PDO::MYSQL_ATTR_INIT_COMMAND=>"set names utf8"]
);
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); |
|
Bei mir haben ich damit keine Ümlautprobleme mehr.
LG
haumi
__________________
Gelassen das hinnehmen, was nicht zu ändern ist,
engagiert angehen was man gestalten kann.
|
|
10.02.2021 07:48 |
|
|
|
|
Views heute: 43.641 | Views gestern: 32.917 | Views gesamt: 80.078.385
|