Android Charset Problem

godofkills

Lt. Commander
Registriert
Dez. 2009
Beiträge
1.997
Hallo,
ich arbeite an einer Webseite mit einem dahinterliegenden mysql Server.
Dazu gehört auch eine Android App.
Nun speichere ich in der mysql Datenbank ab und zu Wörter mit Umlauten.
Diese werden auch auf der Seite wieder richtig ausgegeben.
Charset mysql DB: latin1_german1_ci
Charset html: utf-8

Jetzt ist das Problem das die App noch dazu kommt.
Da werde die Umlaute nicht richtig angezeigt.
Charset app: utf-8

Änder ich den Charset der Db auf utf-8 werden die Umlaute in der App richtig angezeigt aber auf der Seite nicht mehr.
Kann mir einer helfen, wie bzw. welchen Charset ich nehmen kann damit ich auf allen Plattformen(Browser(PC),App(Android)) die Umlaute richtig sehen kann.
 
Also Zeichensätze zu mischen ist schonmal eine schlechte Idee ;)
Du solltest überall die gleichen Zeichensätze nehmen, UTF-8 bietet sich da an.

Wie greift denn die Android auf die DB zu? Die App wird ja wohl kaum eine MySQL-Verbindung öffnen sondern mit einem Webservice oder so kommunizieren.

Generell musst du den Zeichensatz überall hier beachten:
  • in der Tabelle der Datenbank
  • in der MySQL-Verbindung (Verbindungscharset)
  • auf der Webseite (im HTML)
  • im HTTP Response Header (für Webservices)
  • bei der Speicherung deiner Dateien (z.B. Übersetzungsdateien oder PHP-Dateien mit hardcodet Strings)
  • bei allen String-Operationen in PHP (siehe Code 1)

Bei irgendeinem hast du den Zeichensatz vergessen. (Beim letzten nicht, das wird nicht die Ursache sein, wollte ich der Vollständigkeit halber aber erwähnen)


Code 1:
PHP:
<?php

var_dump(strlen('Äuto'));
var_dump(mb_strlen('Äuto', 'UTF-8'));
 
Ich mach das natürlich mit Hilfe von php. Also ich hab ein paar Skripte die mir die Daten bereitstellen für die App.

Würde ja gerne überall utf-8 nehmen bzw. so hatte ich es ja bereits gemacht. Aber bei der DB kann ich nur utf-8 mit Zusätzen wählen z.b utf-8 general oder utf-8 bin. Und als ich den Charset der Db von latin_german auf utf-8-bin oder general wechselte zeigte mir die HTML nur noch Fragezeichen an, statt die Umlaute(obwohl der charset der html Seite auch utf-8 ist), aber die App funktionierte.
 
Zurück
Oben