Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> firebird character set 
:(
    Опции темы
optix
Дата 15.10.2007, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 14.9.2007

Репутация: нет
Всего: 2



Код

CREATE DATABASE 'c:\somedb.fdb' 
user 'SYSDBA' password '123';

По дефолту CHARACTER SET NONE, все работает нормально.

Код

    insertSql = """insert into 
            SOMETABLE (PARAM1, PARAM2, PARAM3, PARAM4) 
            values (?, ?, ?, ?)"""

.....
.....
.....

        row = [ param1.encode("cp1251"),
               param2.encode("cp1251"), 
               param3.encode("cp1251"), 
               param4.encode("cp1251") ]   
        self.cursor.execute(self.insertSql, row)
        self.connection.commit()


param1... param4 - строки в utf8


Если указываю кодировку WIN1251 - не работет.

Код

CREATE DATABASE 'c:\somedb.fdb' 
user 'SYSDBA' password '123' 
DEFAULT CHARACTER SET WIN1251;



Цитата

(-802, 'isc_dsql_execute: \n  arithmetic exception, numeric overflow, or string truncation\n  Cannot transliterate character between character sets')


Это сообщение отредактировал(а) optix - 15.10.2007, 14:38
PM MAIL   Вверх
pythonwin
Дата 15.10.2007, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2529
Регистрация: 18.4.2006
Где: за компом

Репутация: нет
Всего: 36



Цитата(optix @  15.10.2007,  17:36 Найти цитируемый пост)
Если указываю кодировку WIN1251 - не работет.

а если прописать cp1251 ?
PM WWW GTalk Jabber   Вверх
optix
Дата 16.10.2007, 08:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 14.9.2007

Репутация: нет
Всего: 2



Цитата(pythonwin @ 15.10.2007,  16:38)
Цитата(optix @  15.10.2007,  17:36 Найти цитируемый пост)
Если указываю кодировку WIN1251 - не работет.

а если прописать cp1251 ?

Цитата

Statement failed, SQLCODE = -204

Dynamic SQL Error
-SQL error code = -204
-Data type unknown
-CHARACTER SET CP1251 is not defined

PM MAIL   Вверх
optix
Дата 16.10.2007, 09:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 14.9.2007

Репутация: нет
Всего: 2



Все, решил проблему
надо при коннекте указывать кодировку оказывается.
PM MAIL   Вверх
pythonwin
Дата 17.10.2007, 06:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2529
Регистрация: 18.4.2006
Где: за компом

Репутация: нет
Всего: 36



optix, сможешь написать пример или дать ссылки? 
для будущих поколений smile
PM WWW GTalk Jabber   Вверх
optix
Дата 17.10.2007, 09:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 14.9.2007

Репутация: нет
Всего: 2



Цитата(pythonwin @ 17.10.2007,  06:14)
optix, сможешь написать пример или дать ссылки? 
для будущих поколений smile

Пожалуйста
указываем кодировку при соединении
Код

import kinterbasdb as dbdriver
.....

        self.connection = dbdriver.connect( 
                            dsn='c:\mydb.fdb', 
                            user='sysdba', 
                            password='123',
                            dialect=3,
                            charset='WIN1251'  )


и сцылка 
http://kinterbasdb.sourceforge.net/dist_do...utorial_connect




Вот тока теперь у меня еще одна трабла возникла.

Вот это все отлично работало под виндой. Пытаюсь перенести под линух
пишет 

Цитата

'ascii' codec can't decode byte 0xc0 in position 8: ordinal not in range(128)


то что пишеться в базу выглядит во так вот
Цитата

['1174628860.77', 'default.\xc0\xeb\xe5\xf0\xf2\xca\xee\xeb\xeb\xe5\xea\xf2\xee\xf0\xd2\xe5\xf1\xf2\xe5\xf0', '\xf2\xe5\xf1\xf2\xee\xe2\xfb\xe9_\xea\xe0\xf3\xed\xf2\xe5\xf0', '352']

вроде похоже на win1251






Это сообщение отредактировал(а) optix - 17.10.2007, 10:43
PM MAIL   Вверх
setq
Дата 17.10.2007, 11:01 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Вот это место очень подозрительно:

Код

    param1.encode("cp1251")


Особенно если " param1... param4 - строки в utf8 ". Я бы предварительно декодировал строку в юникод, но я не профи. Ну то есть:

Код

    # Я точно знаю что мои строки в utf8 и я прочёл всё что нашёл
    # в Гугл про работу с юникодом в Питоне. Ха ха ха! Чтож, посмотрим
    # сработает или нет...
    param1.decode("utf8").encode("cp1251")

  Вверх
optix
Дата 17.10.2007, 11:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 14.9.2007

Репутация: нет
Всего: 2



Короче трабла решилась так

Код

import sys
reload(sys)
sys.setdefaultencoding("cp1251")



Тока непонятно зачем нужен reload(sys)
Если без этой строчик то ругается мол нету такой штуки как 'setdefaultencoding'

Цитата

>>> import sys
>>> sys.setdefaultencoding("cp1251")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'setdefaultencoding'
>>> reload(sys)
<module 'sys' (built-in)>
>>> sys.setdefaultencoding("cp1251")
>>>

PM MAIL   Вверх
pythonwin
Дата 17.10.2007, 12:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2529
Регистрация: 18.4.2006
Где: за компом

Репутация: нет
Всего: 36



Цитата(optix @  17.10.2007,  14:11 Найти цитируемый пост)
Короче трабла решилась так

можно ещё прописать кодировку в стандартном файле site.py, но как и способ, который ты используешь не позволяет более одного приложения использовать разные кодировки по умолчанию
короче - читай о unicode у j2a
PM WWW GTalk Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Python: Базы данных | Следующая тема »


 




[ Время генерации скрипта: 0.1199 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.