Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > Flash Приложения: AIR, Zinc и тд.

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 19.05.2009, 09:51
EXFlash вне форума Посмотреть профиль Отправить личное сообщение для EXFlash Найти все сообщения от EXFlash
  № 1  
Ответить с цитированием
EXFlash
 
Аватар для EXFlash

Регистрация: May 2004
Адрес: Ukraine
Сообщений: 23
По умолчанию SQLite>Insert -проблема кодировки

Ломаю голову уже несколько часов:
выполняю SQLite-запрос INSERT, добавляю текстовое поле:
1. Если текст латиницей (English), insert работает.
2. Если текст кириллицей - insert не срабатывает.
useCodePage - никак не влияет на ситуацию. Кто-нибудь с таким сталкивался?

P.S. В стандартном примере Zinc та же проблема.


Последний раз редактировалось EXFlash; 19.05.2009 в 10:15. Причина: в моск поступили новые данные
Старый 19.05.2009, 17:42
Air_mAn вне форума Посмотреть профиль Отправить личное сообщение для Air_mAn Найти все сообщения от Air_mAn
  № 2  
Ответить с цитированием
Air_mAn
 
Аватар для Air_mAn

Регистрация: Apr 2008
Сообщений: 102
Текст можно записать в ByteArray:
writeUTFBytes
writeMultiByte
Если вставлять ByteArray проблем быть не должно.

Старый 19.05.2009, 18:41
EXFlash вне форума Посмотреть профиль Отправить личное сообщение для EXFlash Найти все сообщения от EXFlash
  № 3  
Ответить с цитированием
EXFlash
 
Аватар для EXFlash

Регистрация: May 2004
Адрес: Ukraine
Сообщений: 23
Я пытался работать с ByteArray, но это не сработало, либо у меня руки кривые

Старый 19.05.2009, 20:49
Air_mAn вне форума Посмотреть профиль Отправить личное сообщение для Air_mAn Найти все сообщения от Air_mAn
  № 4  
Ответить с цитированием
Air_mAn
 
Аватар для Air_mAn

Регистрация: Apr 2008
Сообщений: 102
Код:
var conn:SQLConnection = new SQLConnection();
conn.open("myDatabase.db");
var sql:String = "INSERT INTO mytable (data) VALUES (:data)";
var bytes:ByteArray = new ByteArray();
bytes.writeMultiByte("Привет!", "utf-8");
var statement:SQLStatement = new SQLStatement();
statement.parameters[":data"] = bytes;
statement.sqlConnection = conn;
statement.execute();
поле data должно быть соответственно BLOB

Старый 19.05.2009, 23:36
EXFlash вне форума Посмотреть профиль Отправить личное сообщение для EXFlash Найти все сообщения от EXFlash
  № 5  
Ответить с цитированием
EXFlash
 
Аватар для EXFlash

Регистрация: May 2004
Адрес: Ukraine
Сообщений: 23
Э... может я не упомянул... я работаю с SQLite и Zinc.

Старый 13.08.2009, 13:02
AVS_77 вне форума Посмотреть профиль Отправить личное сообщение для AVS_77 Найти все сообщения от AVS_77
  № 6  
Ответить с цитированием
AVS_77

Регистрация: Jun 2009
Сообщений: 4
В общем с подобной проблемой я тоже сталкнулся, кроме того в 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");

Старый 18.12.2009, 11:32
SDA_Grails вне форума Посмотреть профиль Отправить личное сообщение для SDA_Grails Найти все сообщения от SDA_Grails
  № 7  
Ответить с цитированием
SDA_Grails
[+1 04.01.10]
[+3 27.01.10]

Регистрация: Dec 2009
Сообщений: 28
ребята есть на много проще способ.
у меня все заработало моментально

1. Скачиваем и устанавливаем SQLLite Expert Personal
2. Создаем в нем новую БД в кодировке utf-8
3. Конектимся к базе и выполяем любые DML команды

У вас не будет больше проблем с кодировкой. если будут вопросы пишите помогу

Старый 18.12.2009, 11:54
EXFlash вне форума Посмотреть профиль Отправить личное сообщение для EXFlash Найти все сообщения от EXFlash
  № 8  
Ответить с цитированием
EXFlash
 
Аватар для EXFlash

Регистрация: May 2004
Адрес: Ukraine
Сообщений: 23
Сейчас посмотрел - база в UTF-8. А ты говоришь про AIR или Zinc?

Старый 19.12.2009, 16:00
Skyggedans вне форума Посмотреть профиль Отправить личное сообщение для Skyggedans Найти все сообщения от Skyggedans
  № 9  
Ответить с цитированием
Skyggedans
 
Аватар для Skyggedans

Регистрация: Jul 2009
Адрес: Kharkov.UA
Сообщений: 20
Записей в блоге: 1
Отправить сообщение для Skyggedans с помощью ICQ
Цинк использует внешнюю клиентскую ДЛЛ-ку sqlite.dll или код для работы со Скулайтом вкомпилен в сам движок, как в AIR?
Если отдельную длл-ку, то можно ее заменить скомпиленной с поддержкой ICU. У меня тоже куча траблов была с украинскими символами в базе - LIKE не работал, сортировка неправильная была. Скомпилил с ICU - все заработало, правда добавилось еще 3 длл-ки, одна из которых весит 15 метров.
Забыл добавить, что я тогда с Python-ом работал, но подход, по сути, универсальный.


Последний раз редактировалось Skyggedans; 19.12.2009 в 16:30.
Старый 19.12.2009, 16:22
EXFlash вне форума Посмотреть профиль Отправить личное сообщение для EXFlash Найти все сообщения от EXFlash
  № 10  
Ответить с цитированием
EXFlash
 
Аватар для EXFlash

Регистрация: May 2004
Адрес: Ukraine
Сообщений: 23
Zinc использует свою библиотеку mdm_Database.dll, в которую встроен SQLite.
При компиляции все встраивается в один exe-файл.
Но, на крайний случай цинк умеет работать с внешними dll-файлами.

Создать новую тему Ответ Часовой пояс GMT +4, время: 01:14.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
Insert , SQLite , zinc , кодировка
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 01:14.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.