В общем с подобной проблемой я тоже сталкнулся, кроме того в SELECT по русским символам типа SELECT с1 FROM t1 WHERE c1 = 'Пётр' тоже не работает , и решение обоих проблем как мне кажется возможно корявым методом транслитерации русских символов из приложения с внесением в БД уже латиницы.
В недавнем случае с которым пришлось заниматься самому, также столкнулся с проблемой отображения кирилических символов хранящихся в БД в UTF-8 или ANSI при использовании стандартных виндовых русских шрифтов типа Arial. Суть проблемы в интерпритации Цинком байтовых последовательностей полученных из БД методом
Код AS3:
str_db = mdm.Database.SQLite.getField(0, 0);
при передаче в строковую переменную Flash. При хранении в БД в кодировке UTF-8 решил проблему так:
Код AS3:
t_task_text.text = f_decode_zinc_to_utf_8(str_db);
public function f_decode_zinc_to_utf_8(str_arg:String):String{
//Функция перекодирует полученную и неверно интерпретированную Цинком из БД строку
//в кодировку utf-8
var i:Number;
var n_str_len:Number;
var n_char_code:Number;
var ByteStr:ByteArray = new ByteArray();
var str_return:String;
//посчитать кол-во символов
n_str_len = str_arg.length;
if (n_str_len == 0){
return '';
}
//порезать на символы
//обрабатывать по символьно в байты
for (i = 0; i < n_str_len; i++){
n_char_code = str_arg.charCodeAt(i);
trace(n_char_code);
ByteStr.position = i;
ByteStr.writeByte(n_char_code);
}
ByteStr.position = 0;
str_return = ByteStr.readMultiByte(ByteStr.bytesAvailable,"utf-8");//"utf-8" x-cp1251
return str_return;
}
из кода тоже видно что БД можо и и в ANSI хранить только в функции перекодировки использовать str_return = ByteStr.readMultiByte(ByteStr.bytesAvailable,"x-cp1251");