Question

J'ai une base de données dont j'extrais les données vers mon projet Android.Il y a quelques chaînes de texte avec les lettres suédoises å, ä, ö écrites comme suit :√•=å, √§=ä, √δ=ö.Quelle serait la meilleure façon de convertir ces symboles en lettres réelles avant de les imprimer sur la vue texte de l'application ?Une substitution, comme remplacer √• par å, est-elle la voie à suivre ?Comment cela serait-il entré dans la requête qui récupère maintenant les données :

public Cursor getAlternative1(long categoryid, int questionid) {
                final String MY_QUERY = "SELECT question, image, alternative, questionid, correct FROM tbl_question a INNER JOIN tbl_alternative b ON a._id=b.questionid AND b.categoryid=a.categoryid WHERE a.categoryid=? AND a._id=?";

                Cursor cursor = mDb.rawQuery(MY_QUERY, new String[]{String.valueOf(categoryid), String.valueOf(questionid)});
                if (cursor != null) {
                      cursor.moveToFirst();
                 }
                return cursor;
            }

Merci pour toute aide!

Était-ce utile?

La solution

Il semble que vos données de chaîne aient été initialement codées dans UTF-8, mais sont interprétés à tort comme MacRoman.

La première chose à faire est de vous assurer que vos données sont correctement stockées dans la base de données.Vous pouvez utiliser SELECT HEX(SomeColumn) pour voir les octets bruts stockés pour la chaîne.L'encodage par défaut dans SQLite est UTF-8, donc une chaîne correctement encodée aura C3A5 pour å, C3A4 pour ä, et C3B6 pour ö.Si tu vois E2889AE280A2, E2889AC2A7, E2889AE28882, alors la mauvaise interprétation des caractères (å→√•, ä→√§, ö→√δ) se produit avant que les données n'entrent dans la base de données.Si tu vois juste 8C, 8A, et 9A, alors l'interprétation erronée inverse est faite.

Si votre base de données est correcte, il s'agit probablement d'une routine d'E/S qui pense que le codage du système est UTF-8 alors qu'il s'agit en réalité de MacRoman.Essayez quelque chose comme System.setProperty("file.encoding", "macintosh");.

Autres conseils

C'est un peu ancien, mais si vous importez les données dans SQLite à l'aide de Windows CMD Shell, essayez de le faire dans la coquille:

C:> CHCP 65001

Ceci changera la page de code de CMD Shell vers UTF 8

C:> SQLITE3 BASEDASE.DB

où inserts.sql est un UTF-8 (sans caractère de notes !!) séquence d'inserts.Vous pouvez créer ce type de fichier à l'aide de Notepad ++

espère qu'il aide

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top