PhoneGap, Database, UTF-8 => Wie?

  • 1 Antworten
  • Neuester Beitrag
Diskutiere PhoneGap, Database, UTF-8 => Wie? im Android App Entwicklung im Bereich Betriebssysteme & Apps.
P

pyretta

Ambitioniertes Mitglied
Hallo,

ich arbeite gerade an einer Android App mit PhoneGap. In dieser App wird eine Datenbank verwendet, dessen Tabellen teilweise vorbelegt mitgeliefert werden und teilweise vom Nutzer selbst gefüllt werden können. Dabei kann es vorkommen, dass auch Umlaute und Sonderzeichen in die Tabellen überführt werden und wieder korrekt ausgelesen werden müssen.

Jetzt stellt sich mir die Frage, wie bringe ich der Datenbank bei, dass sie UTF-8 kodierte Daten ausspucken bzw. von vornherein abspeichern soll?

Bin in Sachen WebSQL und SQLite noch recht neu und mir fehlt einfach die nötige Erfahrung damit. Habe aber bisher zu dieser Fragestellung keine mir hilfreiche Antwort über Google gefunden, daher hoffe ich auf die Experten dieses Forums.

Ich habe folgendes ausprobiert, das in "normalem" MySQL funktionierte:

HTML:
<script type="text/javascript" charset="utf-8">
var db=null;
var firstrun = null;
window.onload = function() {
document.addEventListener("deviceready", onDeviceReady, false);
    function onDeviceReady() {
        console.log("device is ready");
        db = window.openDatabase("Database", "1.0", "Database", 200000);
        firstrun = window.localStorage.getItem("runned");         
         if(firstrun == null){            
            db.transaction(initDB, errorCB, successCB_DB);
         }else{
            db.transaction(successCB_DB, errorCB);
         }
    }
}
function initDB(tx) {
tx.executeSql('SET CHARACTER SET utf8');
tx.executeSql('CREATE TABLE IF NOT EXISTS "tbl_user"'            
              + '("user_ID" INTEGER PRIMARY KEY  AUTOINCREMENT  NOT NULL  UNIQUE,' 
              + '"tstamp" DATETIME DEFAULT CURRENT_TIMESTAMP,'
              + '"Username" varchar NOT NULL,'
              + '"Geburtsdatum" date NOT NULL,'
              + '"Geschlecht" varchar NOT NULL,'
              + '"Profiltext" text'
              + ');');
}
function errorCB(err) {
    $('#fehlermeldung').html("error: " + err.code);
}
function successCB_DB() {
    db.transaction(queryDB, errorCB);
    
    firstrun = window.localStorage.getItem("runned");     
    if(firstrun == null){
        window.localStorage.setItem("runned", "1");
    }   
}
</script>
Wenn ich aber den SQL-Befehl "SET CHARACTER SET utf8" einfüge, dann gibt mir die Konsole folgenden Fehler aus:

08-12 10:56:25.992: I/Database(18785): sqlite returned: error code = 1, msg = near "SET": syntax error
Habe auch den SQL-Befehl "SET NAMES 'utf8';" ausprobiert, kam aber zum gleichen Ergebnis leider.

Wenn ich aber gar nichts mache und es einfach so laufen lasse, werden Umlaute durch Rauten mit Fragezeichen ersetzt, das ist natürlich weniger schön.

Wie löse ich das Problem denn nun?

Freue mich auf eure Hilfe. Vielen Dank.
 
Zuletzt bearbeitet: