|
|
|
И всетаки опять кодировка
|
|||
|---|---|---|---|
|
#18+
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 люди помогите, сроки горят, процедуры километровые уже написаны уже не знаю что делать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2004, 13:13 |
|
||
|
И всетаки опять кодировка
|
|||
|---|---|---|---|
|
#18+
Покажи процедурку и слово. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2004, 13:23 |
|
||
|
И всетаки опять кодировка
|
|||
|---|---|---|---|
|
#18+
> в IBExpert написал хранимку запускаю ввожу русское слово и на тебе :( в IBExpert в параметрах подклчения тоже нужно указать русский язык и кодировку - там где что-то вроде Registration info. > была бы моя воля, никогда бы не стал связывться с interbase кто ж тебя неволит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2004, 13:42 |
|
||
|
И всетаки опять кодировка
|
|||
|---|---|---|---|
|
#18+
Там может быть что угодно: слишком длинная строка, неправильное приведение типов, разные типы данных в базе и в запросе клиента... Код в студию!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2004, 13:58 |
|
||
|
И всетаки опять кодировка
|
|||
|---|---|---|---|
|
#18+
aPTТам может быть что угодно: слишком длинная строка, неправильное приведение типов, разные типы данных в базе и в запросе клиента... Вот, вот. Я с такой же проблемой только что столкнулся. Написал процедуру - работает. Через IBComparer синхронизировал с клиентской базой. При вызове процедуры с клиента выдаёт эту самую ошибку. Перекомпилировал в IBExpert - работает. Проблема была в том, одному параметру(переменной) присваиваю значение в теле процедуры русскими буквами: Param = 'Максимальное значение'; Вот на это и ругается после модификации через IBComparer, и НЕ ругается после модификации через IBExpert. Теперь и клиент работать может. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2004, 14:21 |
|
||
|
И всетаки опять кодировка
|
|||
|---|---|---|---|
|
#18+
Zmeishe, а ты знаешь что в интербейсе тексты процедур хранятся в юникоде, а IBExpert его показывает и редактирует некорректно (как однобайтовую кодировку)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2004, 14:28 |
|
||
|
И всетаки опять кодировка
|
|||
|---|---|---|---|
|
#18+
Fedd, вполне возможно ты прав. Но у меня IBExpert и показывает корректно (в смысле, что написал то и показывает), и редактирует корректно, и компилирует корректно, и работает корректно. И клиент не жалуется. После бэкап/ресторе тоже всё корректно. Только после вмешательства IBComparer некорректности начинаются. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2004, 14:59 |
|
||
|
И всетаки опять кодировка
|
|||
|---|---|---|---|
|
#18+
feddZmeishe, а ты знаешь что в интербейсе тексты процедур хранятся в юникоде, а IBExpert его показывает и редактирует некорректно (как однобайтовую кодировку)? BLOB'у кодировка до лампады ;) (на сегодняшний день) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2004, 15:00 |
|
||
|
И всетаки опять кодировка
|
|||
|---|---|---|---|
|
#18+
Мимопроходящий а вот и нет!!!!! там есть BLOB типа 1, и там можно указать кодировку! Проверено электроникой! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2004, 15:02 |
|
||
|
И всетаки опять кодировка
|
|||
|---|---|---|---|
|
#18+
feddа вот и нет!!!!! там есть BLOB типа 1, и там можно указать кодировку! Проверено электроникой! Можно то оно можно, да только толку от этого 0%. Серверу эта кодировка фиолетова ;) Так что, не гони на IBExpert позазря. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2004, 15:06 |
|
||
|
И всетаки опять кодировка
|
|||
|---|---|---|---|
|
#18+
может быть. то есть оно с русским текстом нормально скомпилировалось, и там в BLR оказалась нормальная русская строка? я такого не решался пробовать. ан вот оно что.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2004, 15:08 |
|
||
|
И всетаки опять кодировка
|
|||
|---|---|---|---|
|
#18+
feddтам есть BLOB типа 1, и там можно указать кодировку! Проверено электроникой! А вот это уже интересно. Похоже IBComparer устанавливает какую-то кодировку по умолчанию, а IBExpert нужную. Поэтому у Expert`a корректно, а у Comparer`a кривовато. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2004, 15:11 |
|
||
|
И всетаки опять кодировка
|
|||
|---|---|---|---|
|
#18+
процедура допустим такая 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 попробовал из кода простым запросом это сделать все проходит на ура ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2004, 15:18 |
|
||
|
И всетаки опять кодировка
|
|||
|---|---|---|---|
|
#18+
feddможет быть. то есть оно с русским текстом нормально скомпилировалось, и там в BLR оказалась нормальная русская строка? я такого не решался пробовать. ан вот оно что.... Если при коннекте указана кодировка WIN1251 , а данные пишутся в поле с кодировкой UNICODE_FSS , то сервер автоматом преодразует входящие данные в UNICODE. Если же при подключении кодировку не указать, и начать пихать данные в это же UNICODE-поле, то преобразование происходить не будет . И данные запишутся as ist. Т.е. вместо мультибайтовых символов запишутся однобайтовые. Ну, а дальше, сами представляете как оно и чего... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2004, 15:22 |
|
||
|
И всетаки опять кодировка
|
|||
|---|---|---|---|
|
#18+
а Зимбабве не должно быть в одинарных ковычках? ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2004, 15:23 |
|
||
|
И всетаки опять кодировка
|
|||
|---|---|---|---|
|
#18+
to fedd: должно, но это сути дела не меняет, я и так и так пробовал ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2004, 15:25 |
|
||
|
И всетаки опять кодировка
|
|||
|---|---|---|---|
|
#18+
Я проверил. У этого IBComparer вообще нет параметра кодировки при подключении к БД. Поэтому и кривоватость возникает. Pole, а ты при подключении к БД кодировку указать не забыл??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2004, 15:28 |
|
||
|
И всетаки опять кодировка
|
|||
|---|---|---|---|
|
#18+
pole Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. А квалификатор поставить мы не умеем? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. И проверь, что у тебя в регистрационных параметрах базы в IBExpert задана кодировка подключения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2004, 15:30 |
|
||
|
И всетаки опять кодировка
|
|||
|---|---|---|---|
|
#18+
pole, сорри, тут типа подтопик в твоем топике ;)\r \r Мимопроходящий\r мои эксперименты показывают, что ты не прав. вот здесь я описывал один из этапов - /topic/32338&hl=#217554\r \r можно вбить русские буквы в эксперте в юникодное поле (блоб-не блоб - не важно), но они так и будут лежать там по одному байту на букву\r \r Zmeishe \r \r а про подключение я уже спрашивал ;)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2004, 15:31 |
|
||
|
И всетаки опять кодировка
|
|||
|---|---|---|---|
|
#18+
Упс! name = _WIN1251 'Зимбабве' ; Я у себя поставил и у IBComparer`a мозги на место встали!!! Лепота! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2004, 15:38 |
|
||
|
И всетаки опять кодировка
|
|||
|---|---|---|---|
|
#18+
fedd, в том посте ты пишешь: feddВ таблице одно поле charset unicode_fss. Так вот, если я ввожу в таблицу английские буквы, они в ibexpertе отображаются также, а если русские, то в ibexpertе они превращаются в мусор, который и скопировать сюда страшно. Расскажу "в чем беда твоих обид" ;) VCL-контролы которые использованы в IBExpert'е не умеют работать с UNICODE. Намёк понятен? ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2004, 15:39 |
|
||
|
И всетаки опять кодировка
|
|||
|---|---|---|---|
|
#18+
fedd сегодня, 14:28 в юникоде, а IBExpert его показывает и редактирует некорректно (как однобайтовую кодировку)... Мимопроходящий сегодня, 15:06...не гони на IBExpert позазря. :) Мимопроходящий сегодня, 15:39VCL-контролы которые использованы в IBExpert'е не умеют работать с UNICODE. Мимопроходящий, мы стобой спорим или соглашаемся, я не понил??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2004, 15:46 |
|
||
|
И всетаки опять кодировка
|
|||
|---|---|---|---|
|
#18+
feddв юникоде, а IBExpert его показывает и редактирует некорректно (как однобайтовую кодировку)... Ысчо раз читаем мой пост ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2004, 15:53 |
|
||
|
И всетаки опять кодировка
|
|||
|---|---|---|---|
|
#18+
нет нет нет, погодите про квалификатор: я его ставил до того как сюда запостил и все проходило, но есть одно большое "НО", я же процедуры дергаю из программного кода, там про квалификаторы ничего не известно :) в регпараметрах базы в ibexpert под полем role, charset замореженный стоит ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2004, 15:55 |
|
||
|
|

start [/forum/topic.php?fid=40&msg=32380422&tid=1579371]: |
0ms |
get settings: |
6ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
150ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
| others: | 206ms |
| total: | 434ms |

| 0 / 0 |
