Язык Android String.format явно установлен в США, но для целых чисел используются персидские числа

Название объясняет все это.

String method = String.format(
            "SELECT studymap.id,studymap.title,studymap.zorder,studymap.hierarchy_id,studymap.book_id," +
                    "studymap.abstract,studymap.type,studymap.free_view,studymap.localpath,studymap.flags," +
                    "studymap.visit_status,downloads.status as download_status,downloads.studymap_id,studymap.publish_status "+
                    "FROM studymap LEFT JOIN downloads ON studymap.id = downloads.studymap_id" +
                    " WHERE studymap.book_id = %d ORDER BY studymap.zorder", book.ID);

book.ID - целые числа, но я все еще получаю эту ошибку на некоторых устройствах:

android.database.sqlite.SQLiteException: no such column: ۵۴۵ (code 1): , while compiling: SELECT studymap.id,studymap.title,studymap.zorder,studymap.hierarchy_id,studymap.book_id,studymap.abstract,studymap.type,studymap.free_view,studymap.localpath,studymap.flags,studymap.visit_status,downloads.status as download_status,downloads.studymap_id,studymap.publish_status,hierarchy.is_owned FROM studymap LEFT JOIN downloads ON studymap.id = downloads.studymap_id LEFT JOIN hierarchy ON hierarchy.id = studymap.hierarchy_id WHERE studymap.hierarchy_id = ۵۴۵ ORDER BY studymap.zorder at com.nemo.kaman_android.core.ag.run(SqliteKit.java:303)

SqliteKit.java (303):

Cursor cursor = KamanDatabase.rawQuery(query, null);

Я даже установил язык приложения по умолчанию в MyApplication.java

Locale locale = new Locale(Locale.ENGLISH.getLanguage());
    Locale.setDefault(locale);
    Configuration config = new Configuration();
    config.locale = locale;
    getBaseContext().getResources().updateConfiguration(config,
            getBaseContext().getResources().getDisplayMetrics());

но этого явно недостаточно

Я строил такие запросы некоторое время назад:

"SELECT sum(badge) ... " + year_filter + ...

и он вылетал с такими же ошибками на некоторых устройствах. но после использования формата некоторые вызовы исправляются, а некоторые нет. Я не знаю, о чем я думаю.

Редактировать 2: Я подумал, что, возможно, я поместил персидский символ utf8 в середине запроса где-нибудь, что делает целые числа персидскими, но, как теперь я вижу в моих журналах сбоев, такие же исключения происходят на разных запросах на разных устройствах, я просто не может собрать все воедино, одно из устройств имеет стандартную локализацию "фарси", а другое "en", по крайней мере, так считает Acralyzer.

0 ответов

Другие вопросы по тегам