German Emojis und Eigenleben von MySql

Alexander Stolte

Expert
Licensed User
Longtime User
Hallo,

ich Entwickel gerade mehrere Social-Media Apps und diese basieren auf einem MySql Server.
Ich hatte auch erstmal keine Probleme damit, nur jetzt wechselt MySql immer automatisch den DatenTypen. Ich gebe den Spalten wo ich Emojis erwarte, immer den Daten-Typen "NVARCHAR" damit hatte ich auch nie Probleme, nur jetzt ist der Daten-Typ wieder "VARCHAR" und wenn ich den Typ wieder ändern will, auf NVARCHAR dann lässt er mich nicht, wenn ich den Typen aber per Abfrage setze ist dieser auch erfolgreich, aber gehe ich den Daten-Typen mir anschauen, dann ist dieser wieder VARCHAR.

Hab die Datenbank auch nach utf8mb4 umgestellt, aber immer noch gibt es Probleme mit emojis...

so langsam drehe ich am Rad, da ich es absolut nicht fixen kann, bei MSSQL hab ich etwas gesetzt und dann blieb der Datentyp auch immer gleich und änderte sich nicht automatisch.

Vielleicht hatte das schon mal jemand hier.:)

oder jemand kann mir eine andere Methode für die Emojis empfehlen. Danke!
 

DonManfred

Expert
Licensed User
Longtime User
MySQL benutzt per default UTF-8. Varchar ist absolut ok hier.
Das Problem vermute ich woanders.

Welche Version läuft denn da als MySQL-Server? MySQL-Version
 

Alexander Stolte

Expert
Licensed User
Longtime User
Solche Emojis wie z.b. das Herz funktionieren auch, aber solche Emojis die utf8mb4 benötogen wie z.b. der Affen Smylie der sich die Augen zu hält, diese gehen nicht, da kommt immer der Fehler:

B4X:
Error: <html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/>
<title>Error 500 </title>
</head>
<body>
<h2>HTTP ERROR: 500</h2>
<p>Problem accessing /rdcmydatabase. Reason:
<pre>    java.sql.SQLException: Incorrect string value: &apos;\xF0\x9F\x99\x88&apos; for column &apos;content&apos; at row 1</pre></p>
<hr /><a href="http://eclipse.org/jetty">Powered by Jetty:// 9.3.z-SNAPSHOT</a><hr/>
</body>
</html>

Das heißt, das der Daten-Typ in der Datenbank nicht kompatibel ist mit der Zeichenkette. Obwohl ich in der Datenbank utf8mb4 ausgewählt habe in der Collation.

Gibt es eine Möglichkeit im RDC, beim connecten zu sagen, das er nicht utf8 sondern utf8mb4 kodieren soll? Meine Config-Datei sieht aktuell so aus:
B4X:
JdbcUrl=jdbc:mysql://localhost/mydatabase?characterEncoding=utf8&useSSL=false

und würde ich jetzt "characterEncoding=utf8mb4" angeben kommen tausend Fehler auf mich zu, also der Weg funktioniert leider nicht.
 

Alexander Stolte

Expert
Licensed User
Longtime User
Ich hoffe mal das ich es hinbekommen habe mit folgendem:

B4X:
SET character_set_client = utf8mb4;
SET character_set_results = utf8mb4;
SET character_set_connection = utf8mb4;
SET character_set_client = utf8mb4;
auf jeden Fall Supportet die Datenbank jetzt wieder diese Smylies.
 
Top