Verzweiflung mit Sonderzeichen auf Server?

3 Antworten

Ich kenne mich zwar nicht allzu gut damit aus, aber ich hatte mal das gleiche Problem, und dieser Funktionsaufruf nach dem Aufbau der MySQL-Verbindung hat geholfen:

$mysqli->set_charset("utf8");

Falls du noch die veraltete MySQL-Schnittstelle verwendest, dann lautet es

mysql_set_charset($link, "utf8");

Noch etwas, was vielleicht falsch sein könnte: Wenn du die Antwort des Servers im Java-Client empfängst, musst du die Zeichenkodierung angeben. Der Screenshot sieht so aus, als wurde gültiges UTF-8 fälschlicherweise als ASCII oder ISO-8859 interpretiert.

Woher ich das weiß:Studium / Ausbildung – Informatikstudium

Es hat vermutlich mit den Einstellungen Deines "online" mysql-servers zu tun oder einfacher, Dein Client teilt dem Server einen falschen CHARSET mit oder umgekehrt der Server interpretiert den CHARSET falsch. Du musst also entweder bei jeder Datenbankverbindung den richtigen character set mitgeben (UTF-8) oder, falls das geht, die Datei my.cnf auf dem Server anpassen:

[client]
default-character-set=utf8

[mysql]
default-character-set=utf8

[mysqld]
collation-server = utf8_unicode_ci
init-connect='SET NAMES utf8'
character-set-server = utf8

Check auch mal das da, um Deine Statements zu validieren...

https://www.experts-exchange.com/articles/11880/Unicode-and-Character-Collisions.html

Woher ich das weiß:eigene Erfahrung
Die Texte codiere ich vor dem Senden per POST mit URLEncoder.encode(text, "UTF-8")

Warum? Wenn Du auf einer UTF-8 codierten Seite Text eingibst, wird der UTF-8 codiert an den Server geschickt.

Alex

linkman13 
Fragesteller
 03.02.2019, 16:36

Naja wenn das weglasse gibt die Seite absolut gar nichts zurück

0
VeryBestAnswers  03.02.2019, 16:41

Das stimmt schon. Wenn der Server UTF-8 erwartet, muss der Client den Text in UTF-8 codieren.

0
EinAlexander  03.02.2019, 16:44
@VeryBestAnswers

Wenn die Seite mit dem Eingabeformular UTF-8 codiert ist, ist auch der Text, der mit dem Formular abgeschickt wird UTF-8 codiert (solange nicht <form accept-charset="iso-8859-1"> oder dgl. angegeben ist).

0
VeryBestAnswers  03.02.2019, 16:50
@EinAlexander

So wie ich das verstehe, wird die Seite nicht in einem Browser, sondern in einem Java-Client aufgerufen. Also muss man im Client all das tun, was ein Browser ganz automatisch macht, wie z.B. die richtige Zeichencodierung setzen.

Ich weiß allerdings nicht, ob der Fragesteller ein Framework verwendet, das sich darum kümmert.

0
EinAlexander  03.02.2019, 16:52
@VeryBestAnswers
So wie ich das verstehe, wird die Seite nicht in einem Browser, sondern in einem Java-Client aufgerufen.

Ah okay. Ich ging davon aus, dass der Post-Request vom Browser kommt.

0