Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / И всетаки опять кодировка / 25 сообщений из 33, страница 1 из 2
19.01.2004, 13:13
    #32380148
pole
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
И всетаки опять кодировка
Arithmetic overflow or division by zero has occurred.
arithmetic exception, numeric overflow, or string truncation.
Cannot transliterate character between character sets.

По форуму поискал, посмотрел что нужно сделать чтоб такого не было, вроде все так и сделал везде, где можно кодировку для полей таблиц(в доменах) поставил win1251 collate тоже win1251, база по умолчанию тоже как надо

в IBExpert написал хранимку запускаю ввожу русское слово и на тебе :(

причем, что самое интересно если запустить отладчик процедуры и иницилизировать входной параметр с тем же самым русским словом то запрос выполняется !!!!!

была бы моя воля, никогда бы не стал связывться с interbase

люди помогите, сроки горят, процедуры километровые уже написаны
уже не знаю что делать
...
Рейтинг: 0 / 0
19.01.2004, 13:23
    #32380164
Zmeishe
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
И всетаки опять кодировка
Покажи процедурку и слово.
...
Рейтинг: 0 / 0
19.01.2004, 13:42
    #32380215
fedd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
И всетаки опять кодировка
> в IBExpert написал хранимку запускаю ввожу русское слово и на тебе :(

в IBExpert в параметрах подклчения тоже нужно указать русский язык и кодировку - там где что-то вроде Registration info.

> была бы моя воля, никогда бы не стал связывться с interbase

кто ж тебя неволит?
...
Рейтинг: 0 / 0
19.01.2004, 13:58
    #32380261
aPT
aPT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
И всетаки опять кодировка
Там может быть что угодно: слишком длинная строка, неправильное приведение типов, разные типы данных в базе и в запросе клиента...
Код в студию!!!
...
Рейтинг: 0 / 0
19.01.2004, 14:21
    #32380324
Zmeishe
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
И всетаки опять кодировка
aPTТам может быть что угодно: слишком длинная строка, неправильное приведение типов, разные типы данных в базе и в запросе клиента...

Вот, вот. Я с такой же проблемой только что столкнулся.
Написал процедуру - работает.
Через IBComparer синхронизировал с клиентской базой.
При вызове процедуры с клиента выдаёт эту самую ошибку.
Перекомпилировал в IBExpert - работает.
Проблема была в том, одному параметру(переменной) присваиваю значение в теле процедуры русскими буквами:
Param = 'Максимальное значение';
Вот на это и ругается после модификации через IBComparer,
и НЕ ругается после модификации через IBExpert. Теперь и клиент работать может.
...
Рейтинг: 0 / 0
19.01.2004, 14:28
    #32380350
fedd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
И всетаки опять кодировка
Zmeishe, а ты знаешь что в интербейсе тексты процедур хранятся в юникоде, а IBExpert его показывает и редактирует некорректно (как однобайтовую кодировку)?
...
Рейтинг: 0 / 0
19.01.2004, 14:59
    #32380422
Zmeishe
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
И всетаки опять кодировка
Fedd, вполне возможно ты прав.
Но у меня IBExpert и показывает корректно (в смысле, что написал то и показывает), и редактирует корректно, и компилирует корректно, и работает корректно. И клиент не жалуется. После бэкап/ресторе тоже всё корректно.
Только после вмешательства IBComparer некорректности начинаются.
...
Рейтинг: 0 / 0
19.01.2004, 15:00
    #32380425
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
И всетаки опять кодировка
feddZmeishe, а ты знаешь что в интербейсе тексты процедур хранятся в юникоде, а IBExpert его показывает и редактирует некорректно (как однобайтовую кодировку)?
BLOB'у кодировка до лампады ;)
(на сегодняшний день)
...
Рейтинг: 0 / 0
19.01.2004, 15:02
    #32380436
fedd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
И всетаки опять кодировка
Мимопроходящий

а вот и нет!!!!!

там есть BLOB типа 1, и там можно указать кодировку! Проверено электроникой!
...
Рейтинг: 0 / 0
19.01.2004, 15:06
    #32380450
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
И всетаки опять кодировка
feddа вот и нет!!!!!
там есть BLOB типа 1, и там можно указать кодировку! Проверено электроникой!

Можно то оно можно, да только толку от этого 0%.
Серверу эта кодировка фиолетова ;)
Так что, не гони на IBExpert позазря. :)
...
Рейтинг: 0 / 0
19.01.2004, 15:08
    #32380458
fedd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
И всетаки опять кодировка
может быть. то есть оно с русским текстом нормально скомпилировалось, и там в BLR оказалась нормальная русская строка?
я такого не решался пробовать. ан вот оно что....
...
Рейтинг: 0 / 0
19.01.2004, 15:11
    #32380466
Zmeishe
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
И всетаки опять кодировка
feddтам есть BLOB типа 1, и там можно указать кодировку! Проверено электроникой!
А вот это уже интересно.
Похоже IBComparer устанавливает какую-то кодировку по умолчанию, а IBExpert нужную. Поэтому у Expert`a корректно, а у Comparer`a кривовато.
...
Рейтинг: 0 / 0
19.01.2004, 15:18
    #32380482
pole
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
И всетаки опять кодировка
процедура допустим такая

CREATE PROCEDURE TEST2 (
NAME VARCHAR(60) CHARACTER SET WIN1251)
RETURNS (
ID_ATD CHAR(10) CHARACTER SET WIN1251)
AS
begin
select ID_ATD
from asatd
where name_atd = :name
into :ID_ATD ;
suspend;
end


вот процедура которая дергает процедуру выше, но это для теста, на самом деле у меня процедура дергается из кода
CREATE PROCEDURE TEST
RETURNS (
ID_ATD CHAR(10) CHARACTER SET WIN1251)
AS
DECLARE VARIABLE NAME VARCHAR(60) CHARACTER SET WIN1251;
begin
name = "Зимбабве" ;
execute procedure test2(name) returning_values :ID_ATD ;
suspend;
end


ддл таблицы нужен ?
SET NAMES WIN1251;
CREATE TABLE ASATD (
ID_ATD D_PK_DM NOT NULL,
IDPARENT_ATD D_PK_DM,
ID_KLS D_PK_DM NOT NULL,
NAME_ATD D_NAME_MID_DM,
OKATO_ATD D_OKATO_DM,
GID_ATD D_GID_DM,
LEVEL_ATD D_ATETYPE_DM NOT NULL,
STATUS_ATD SMALLINT,
SQ_ATD NUMERIC(15,2),
PLANSH_ATD VARCHAR(255),
ID_GEOMAP CHAR(10) NOT NULL
);

пройдусь по доменам:
CREATE DOMAIN D_PK_DM AS
CHAR(10) CHARACTER SET WIN1251
COLLATE WIN1251

CREATE DOMAIN D_NAME_MID_DM AS
VARCHAR(60) CHARACTER SET WIN1251
COLLATE WIN1251

CREATE DOMAIN D_OKATO_DM AS
VARCHAR(16) CHARACTER SET WIN1251
COLLATE WIN1251

CREATE DOMAIN D_GID_DM AS
VARCHAR(40) CHARACTER SET WIN1251
COLLATE WIN1251

CREATE DOMAIN D_ATETYPE_DM AS
INTEGER


to fedd:
>кто ж тебя неволит?
меня ни кто не неволит :) меня неволит "что" ! а "что" - это уже работающая субд на interbase

ps попробовал из кода простым запросом это сделать все проходит на ура
...
Рейтинг: 0 / 0
19.01.2004, 15:22
    #32380489
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
И всетаки опять кодировка
feddможет быть. то есть оно с русским текстом нормально скомпилировалось, и там в BLR оказалась нормальная русская строка?
я такого не решался пробовать. ан вот оно что....
Если при коннекте указана кодировка WIN1251 , а данные пишутся в поле с кодировкой UNICODE_FSS , то сервер автоматом преодразует входящие данные в UNICODE. Если же при подключении кодировку не указать, и начать пихать данные в это же UNICODE-поле, то преобразование происходить не будет . И данные запишутся as ist. Т.е. вместо мультибайтовых символов запишутся однобайтовые. Ну, а дальше, сами представляете как оно и чего...
...
Рейтинг: 0 / 0
19.01.2004, 15:23
    #32380494
fedd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
И всетаки опять кодировка
а Зимбабве не должно быть в одинарных ковычках? ;)
...
Рейтинг: 0 / 0
19.01.2004, 15:25
    #32380497
pole
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
И всетаки опять кодировка
to fedd:
должно, но это сути дела не меняет, я и так и так пробовал
...
Рейтинг: 0 / 0
19.01.2004, 15:28
    #32380508
Zmeishe
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
И всетаки опять кодировка
Я проверил. У этого IBComparer вообще нет параметра кодировки при подключении к БД. Поэтому и кривоватость возникает.
Pole, а ты при подключении к БД кодировку указать не забыл???
...
Рейтинг: 0 / 0
19.01.2004, 15:30
    #32380511
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
И всетаки опять кодировка
pole
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
CREATE PROCEDURE TEST 
RETURNS ( 
ID_ATD CHAR( 10 ) CHARACTER SET WIN1251) 
AS 
DECLARE VARIABLE NAME VARCHAR( 60 ) CHARACTER SET WIN1251; 
begin 
name =  "Зимбабве"  ; 
execute procedure test2(name) returning_values :ID_ATD ; 
suspend; 
end 


А квалификатор поставить мы не умеем?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
CREATE PROCEDURE TEST 
RETURNS ( 
ID_ATD CHAR( 10 ) CHARACTER SET WIN1251) 
AS 
DECLARE VARIABLE NAME VARCHAR( 60 ) CHARACTER SET WIN1251; 
begin 
name = _WIN1251 'Зимбабве' ; 
execute procedure test2(name) returning_values :ID_ATD ; 
suspend; 
end 


И проверь, что у тебя в регистрационных параметрах базы в IBExpert
задана кодировка подключения.
...
Рейтинг: 0 / 0
19.01.2004, 15:31
    #32380514
fedd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
И всетаки опять кодировка
pole, сорри, тут типа подтопик в твоем топике ;)\r
\r
Мимопроходящий\r
мои эксперименты показывают, что ты не прав. вот здесь я описывал один из этапов - /topic/32338&hl=#217554\r
\r
можно вбить русские буквы в эксперте в юникодное поле (блоб-не блоб - не важно), но они так и будут лежать там по одному байту на букву\r
\r
Zmeishe \r
\r
а про подключение я уже спрашивал ;))
...
Рейтинг: 0 / 0
19.01.2004, 15:38
    #32380538
Zmeishe
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
И всетаки опять кодировка
Упс!
name = _WIN1251 'Зимбабве' ;
Я у себя поставил и у IBComparer`a мозги на место встали!!! Лепота!
...
Рейтинг: 0 / 0
19.01.2004, 15:39
    #32380540
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
И всетаки опять кодировка
fedd, в том посте ты пишешь:
feddВ таблице одно поле charset unicode_fss. Так вот, если я ввожу в таблицу английские буквы, они в ibexpertе отображаются также, а если русские, то в ibexpertе они превращаются в мусор, который и скопировать сюда страшно.

Расскажу "в чем беда твоих обид" ;)
VCL-контролы которые использованы в IBExpert'е не умеют работать с UNICODE.
Намёк понятен? ;)
...
Рейтинг: 0 / 0
19.01.2004, 15:46
    #32380558
fedd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
И всетаки опять кодировка
fedd сегодня, 14:28 в юникоде, а IBExpert его показывает и редактирует некорректно (как однобайтовую кодировку)...

Мимопроходящий сегодня, 15:06...не гони на IBExpert позазря. :)

Мимопроходящий сегодня, 15:39VCL-контролы которые использованы в IBExpert'е не умеют работать с UNICODE.

Мимопроходящий, мы стобой спорим или соглашаемся, я не понил???
...
Рейтинг: 0 / 0
19.01.2004, 15:53
    #32380576
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
И всетаки опять кодировка
feddв юникоде, а IBExpert его показывает и редактирует некорректно (как однобайтовую кодировку)...
Ысчо раз читаем мой пост
...
Рейтинг: 0 / 0
19.01.2004, 15:55
    #32380582
pole
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
И всетаки опять кодировка
нет нет нет, погодите

про квалификатор: я его ставил до того как сюда запостил и все проходило, но есть одно большое "НО", я же процедуры дергаю из программного кода, там про квалификаторы ничего не известно :)

в регпараметрах базы в ibexpert под полем role, charset замореженный стоит
...
Рейтинг: 0 / 0
19.01.2004, 15:55
    #32380584
fedd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
И всетаки опять кодировка
ааааааааа!

дошло!!!

спасибо!

и за это

name = _WIN1251 'Зимбабве' ;

спасибо - не знал про такую штуку. где она описана?
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / И всетаки опять кодировка / 25 сообщений из 33, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]