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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> kinterbasdb - Проблема с кодировкой, При вставке записи в таблицу 
V
    Опции темы
DmiSbr
Дата 20.10.2010, 11:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Доброго всем дня !

Firebird 2.1.3 поднят на Ubuntu
Создана база с параметром "DEFAULT CHARACTER SET NONE"
В базе табличка
Код
CREATE TABLE USERS (
    USR_ID    INTEGER NOT NULL,
    USR_NAME  VARCHAR(50) CHARACTER SET WIN1251
);

Далее устанавливаем соединение и пишем в таблицу
Код
#!/usr/bin/python
# _*_ coding:cp1251
import os, sys

import kinterbasdb
from contextlib import closing

conn = kinterbasdb.connect(
 host='localhost', database='retail',
 user='sysdba', password='ghbynSh',
 charset='WIN1251', dialect=3)

curr = conn.cursor()

deleteSQL = "delete from users"
curr.execute(delete SQL)

insertSQL = "insert into users (usr_name) values('User')"
curr.execute(insertSQL)

insertSQL = "insert into users (usr_name) values('Юзер')"
curr.execute(insertSQL)
conn.commit()

curr.execute('select usr_name from users')
for record in curr:
 print record[0]

Запрос после вставки выбирает:
User
Юзер
То есть не в той кодировке
Если добавить строку в таблицу например из IBExpert, то все замечательно.
Подскажите пожалуйста, что я не учел и куда копать 
Заранее благодарен
PM MAIL   Вверх
pythonwin
Дата 20.10.2010, 11:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(DmiSbr @  20.10.2010,  14:00 Найти цитируемый пост)
Firebird 2.1.3 поднят на Ubuntu

а зачем тогда cp1251? в будущем может понадобиться символы, которых нет в cp2151 и тогда лучше использовать кодировку utf-8
попробуй так
Код

insertSQL = "insert into users (usr_name) values('%s')"%(u'Юзер'.encode('cp1251')) # приведим к строке
curr.execute(insertSQL)
conn.commit()


и с начале файла кодировка выставлена странно - не видел так раньше - обычно так:
Код

# -*- coding: cp2151 -*-

PM WWW GTalk Jabber   Вверх
DmiSbr
Дата 20.10.2010, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



2 pythonwin

Да так работает
Спасибо большое

Буду дальше python ковырять, очень занимательная штука

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


Эксперт
****


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

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



PM WWW GTalk Jabber   Вверх
DmiSbr
Дата 20.10.2010, 13:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата
а зачем тогда cp1251? в будущем может понадобиться символы, которых нет в cp2151 и тогда лучше использовать кодировку utf-8

Вопрос вдогонку:
Если база работает на Linux, клиенты планируются в Web с Windows и Linux, то какую кодовую страницу лучше использовать в базе и в программе ?

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


Эксперт
****


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

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



Цитата(DmiSbr @  20.10.2010,  16:04 Найти цитируемый пост)
Если база работает на Linux, клиенты планируются в Web с Windows и Linux, то какую кодовую страницу лучше использовать в базе и в программе ?

если сервер linux, а клиеты заходят на web-страницу, то лучше используйте кодировку utf-8, тем более, что у вас будет запас для работы с различными языками (немецкий, французский, китайский и т.д.)
PM WWW GTalk Jabber   Вверх
DmiSbr
Дата 20.10.2010, 13:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



2 pythonwin
Цитата
если сервер linux, а клиеты заходят на web-страницу, то лучше используйте кодировку utf-8, тем более, что у вас будет запас для работы с различными языками (немецкий, французский, китайский и т.д.)

Понятно, спасибо. Будем пробовать на вкус UTF-8 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Python: Базы данных | Следующая тема »


 




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


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

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