powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
115 сообщений из 115, показаны все 5 страниц
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39730617
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Собственно, subj.
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39730622
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ась?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39730629
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий, формирую строку EXCEPTION на кириллице из переменной, а она в IBExpress кракозябрами вылетает. Чот туплю...
Какой у переменной должен быть CHARSET?
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39730637
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий, CHARSET соединения WIN1251, а строку на кириллице пихал в переменную :msg c CHARSET UTF8. Одна из ХП должна плевать мою строку в виде:
EXCEPTION "ID__xConvert" :msg || 'бла-бла-бла';
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39730676
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Перепробовал UTF8, UNICODE_FSS, WIN1251, ISO8859_5 - не помогает.
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39730685
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_dev,

забей, то что ты хочешь не работоспособно. В трёшке кое как выкрутились с USING, но в целом проблема с конвертацией текста эксепшенов собираемых пользователями из переменных разных кодировок в нужный чарсет не решена.
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39730689
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис, печально... И на том спасибо!
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39730712
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пиши всё на английском.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39731642
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем, мне удалось!

Сразу прошу прощения, что в самом начале маленько наврал с CHARSET'ом подключения, который у меня в IBExpert оказался UTF8, а не WIN1251. При WIN1251 сообщение на кириллице от исключения прилетало вполне читаемым. Не суть... Мне удалось сделать так, что теперь сообщение прилетает читаемым при любом CHARSET'е подключения - хоть UTF8, хоть WIN1251, но с условием, что известен CHARSET по умолчанию ОС клиента.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
-- для сообщения исключения с заранее известным CHARSET по умолчанию ОС клиента
CREATE DOMAIN CLIENT_MESSAGE AS VARCHAR(1023) CHARACTER SET WIN1251;
-- workaround for malformed string
CREATE DOMAIN EXCEPTION_MESSAGE AS BLOB CHARACTER SET NONE;

SET TERM ^;
CREATE OR ALTER PROCEDURE CONVERT_EXCEPTION_MESSAGE
  (
    "msg" CLIENT_MESSAGE
  )
  RETURNS
  (
    RET EXCEPTION_MESSAGE
  )
AS
BEGIN
  RET = "msg";
  SUSPEND;
END^
SET TERM ;^

-- Форма отстрела исключения
DECLARE VARIABLE msg VARCHAR(200) CHARACTER SET UTF8 DEFAULT 'Тестовое ';
...
EXCEPTION my_exception
  (SELECT RET FROM CONVERT_EXCEPTION_MESSAGE(:msg || 'сообщение'));

При желании можно сделать, чтобы клиентский софт устанавливал контекстную переменную с указанием CHARSET'а ОС по умолчанию, а строка сообщения бралась из таблицы по ключу указанного CHARSET'а с заворачиванием конвертации в EXECUTE STATEMENT, на выходе которого будет BLOB CHARACTER SET NONE.

Резюмирую: проблема нечитаемых сообщений исключений кроется не в сервере, а в клиенте. Когда мы в EXCEPTION указываем строку в какой-либо кодировке, то она преобразуется к кодировке по умолчанию БАЗЫ ДАННЫХ, а на клиенте интерпретируется как строка с CHARACTER SET NONE.
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39731661
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_dev,

жесть конечно. Я думаю тут можно и без второй ХП обойтись
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39731670
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис, наверно можно, если Cast из VARCHAR к BLOB нормально отработает.

Кажется, я в резюме немного ошибся - строка EXCEPTION конвертируется не к кодировке БД, а к кодировке подключения. То есть. На сколько я понимаю, достаточно в fbclient интерпретировать строку исключения не как строку в кодировке NONE, а как строку в кодировке подключения.
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39731679
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_dev,

во первых блоб там не к чему ибо длина сообщения эксепшена и так ограничена. Вроде как 1023 байтами
Во вторых всю конвертацию можно сделать непосредственно в той процедуре где исключение бросается. Достаточно всего лишь конвертировать через дополнительную локальную переменную
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39731681
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис, без BLOB'а вылетает malformed string.
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39731685
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисВо вторых всю конвертацию можно сделать непосредственно в той процедуре где исключение бросается. Достаточно всего лишь конвертировать через дополнительную локальную переменнуюМне не хотелось в выстреливающей исключение ХП делать кучу BEGIN...END, ухудшающих читаемость.
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39731732
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_dev,

может я что-то не так делаю. Мне ни разу не удалось воспроизвести твою проблему. Везде вижу нормальный русский текст безо всяких приседаний с ХП и конвертацией в BLOB
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39731751
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис, у тебя кодировка подключения WIN1251 или UTF8?
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39731758
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_dev,

и так и так пробовал (3.0, 4.0). Давай скрипт воспроизведения. Может придумаю как более просто сделать
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39731765
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис, у меня:
Код: plsql
1.
SELECT RDB$GET_CONTEXT('SYSTEM', 'ENGINE_VERSION') FROM RDB$DATABASE

выдает 2.5.9 :)
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39731767
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_dev,

ты скрипт воспроизведения дай. Не обязательно целиком твою секретную процедуру. Просто минимальный скрипт для воспроизведения
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39731786
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис, процедуру не дам, потому как зависимостей дофига, а воспроизведение - пожалуйста:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
CREATE OR ALTER EXCEPTION "my_exception" 'ID''s conversion exception';

SET TERM ^;
CREATE OR ALTER PROCEDURE oneRow
  RETURNS
  (
    tmstmp TIMESTAMP
  )
AS
  DECLARE VARIABLE msg VARCHAR(200) CHARACTER SET UTF8
    DEFAULT 'Тестовое ';
BEGIN
  EXCEPTION "my_exception" :msg || 'сообщение';
  tmstmp = CURRENT_TIMESTAMP;
  SUSPEND;
END^
SET TERM ;^

SELECT RDB$GET_CONTEXT('SYSTEM', 'ENGINE_VERSION') FROM oneRow;


Кодировка БД по умолчанию и кодировка подключения UTF8, версия FirebirdSQL сервера WI-V6.3.9.27110, версия клиента (fbclient) 2.5.9.27110, версия IBExpert'а 2018.11.1.2, кодировка файла скрипта "UTF8 (with BOM)".
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39731791
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Насколько я помню, текст исключений - единственное поле в системных таблицах с кодировкой NONE.
Посему как туда что записали, так оно там и лежит.
Когда это извлекается, оно никуда не приводится и передаётся клиенту как есть.

Клиент, есс-но не знает, как интерпретировать строки в NONE.
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39731805
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladКлиент, есс-но не знает, как интерпретировать строки в NONE.Естественно!
Но в строке сообщения по умолчанию для исключения у меня только символы ASCII "ID's conversion exception", а при выстреле EXCEPTION подставляется строка на кириллице. Причем, совершенно не важно, будет ли строковая переменная msg в кодировке UTF8 или WIN1251 - строка на сервере всё равно будет приведена к кодировке подключения, а на клиенте будет воспринята как строка с кодировкой NONE.
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39731811
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad,

не единственное (RDB$ENTRYPOINT, RDB$FILE_NAME), но они вроде не мешают
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39731813
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис, воспроизводится?
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39731825
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_dev,

да. Ну как я и говорил. С исключениями пока всё плохо. А твои выкрутасы может и спасают но выглядят как кривой костыль.
Каждый раз создавать временный блоб как то стрёмно.

hvlad,

в Firebird 4.0 ничего насчёт исключений не думали?
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39731831
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисда. Ну как я и говорил. С исключениями пока всё плохо. А твои выкрутасы может и спасают но выглядят как кривой костыль. Каждый раз создавать временный блоб как то стрёмно.Мне тоже это решение не очень нравится, но ничего не поделаешь. С другой стороны, если всё правильно работает, исключения у меня валиться не должны и BLOB_ID не будет ими увеличиваться. Как вариант, можно написать UDF функцию, которая будет представлять любую строку символов в виде строки с кодировкой NONE, чтобы не использовать для этого BLOB, но писать такую UDF ради выстреливания исключения с понятной строкой на кириллице мне лень. :)
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39731834
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис, а не могли бы уважаемые разработчики поправить интерпретацию строки EXCEPTION, чтобы она воспринималась не как строка с кодировкой NONE, а как строка с кодировкой подключения - как её выплёвывает сервер?
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39732118
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devМне тоже это решение не очень нравится

Зашел, почитал... Так толком и не понял, для чего гланды через задницу удалять.
Если надо блоб с чарсетом NONE из строки получить, то для этого CAST есть.
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39732160
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IBExpert, суть вопроса была не в том, как получить BLOB из строки, а в том, как получить строку исключения на кириллице при кодировке подключения UTF8.
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39732174
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_dev,

запули ка ты этот пример в трекер, пусть Адриано подумает что можно сделать
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39732178
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devкак получить строку исключения на кириллице при кодировке подключения UTF8.

Не поверишь: все тем же cast'ом.

Код: plsql
1.
EXCEPTION "my_exception" cast(:msg || 'сообщение' as varchar(1000) character set win1251)
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39732179
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IBExpert,

оно не работает, пробовали
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39732186
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисоно не работает, пробовали

У меня работает. Чего бы ему не работать?
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39732192
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IBExpert,

это с win1251, а автор пробует с utf8. БД utf8 и подключение utf8
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39732210
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисrdb_dev,

запули ка ты этот пример в трекер, пусть Адриано подумает что можно сделатьЯ с англицким не очень дружу... Перефразируя известную поговорку: "Читать - читаю, писать - в лавочку ношу."
Может ты сам?
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39732211
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисэто с win1251, а автор пробует с utf8. БД utf8 и подключение utf8

А какая разница? Главное, чтобы результат выражения (:msg || 'сообщение') кастился в нужный чарсет.
И да, у меня это работает с коннектом в UTF8. Чего бы ему не работать?
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39732227
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IBExpert,

БД UTF8, чарсет подключения UTF8

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
EXECUTE BLOCK
RETURNS (
    TMSTMP TIMESTAMP)
AS
    DECLARE VARIABLE MSG VARCHAR(200) = 'Привет ';
BEGIN
  EXCEPTION E_CUSTOM_ERROR cast(:msg || 'Мир' as varchar(200) CHARACTER set utf8);
  tmstmp = CURRENT_TIMESTAMP;
  SUSPEND;
END



выдаёт билеберду, хоть там к win1251, хоть utf8 в cast
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39732242
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IBExpert, не верю! :)
При выстреливании исключения с подстановкой строки в национальной кодировке (не важно в какой кодировке - хоть WIN1251, хоть UTF8, хоть UNICODE_FSS) FirebirdSQL сервер v2.5.x (у меня v2.5.9) приводит строку к кодировке подключения (UTF8), а fbclient считает, что полученная строка исключения в кодировке NONE и в результате, национальные символы, приведенные к UTF8 на сервере, выдаются как есть - кракозябрами. Поэтому я обхожу проблему через BLOB CHARSET NONE, загоняя в него строку в кодировке WIN1251. Привести строку непосредственно из VARCHAR(1023) CHARACTER SET WIN1251 к VARCHAR(1023) CHARACTER SET NONE через Cast() не представляется возможным - malformed string.
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39732245
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисвыдаёт билеберду, хоть там к win1251, хоть utf8 в cast

А, это ж у меня эксперт автоматом унутре сообщение на utf8 проверяет... :)
Но тогда это и через блоб работать не должно, раз результат выражения там в чарсет коннекта конвертируется.
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39732250
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_dev Привести строку непосредственно из VARCHAR(1023) CHARACTER SET WIN1251 к VARCHAR(1023) CHARACTER SET NONE через Cast() не представляется возможным - malformed string.

Привести возможно:

Код: plsql
1.
2.
3.
select cast('бла-бла' as varchar(100) character set none),
       cast(cast('бла-бла' as varchar(100) character set win1251) as varchar(100) character set none)
from rdb$database



Другое дело, что это будет уже не utf8, а EXCEPTION ожидает там строку с чарсетом коннекта.
Но у тебя желания тоже странные: коннект в utf8, а исключения тебе подавай в win1251...
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39732251
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IBExpert, с какой версии? Или - где поставить галочку?
У меня IBExpert v2018.11.1.2
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39732260
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IBExpertНо тогда это и через блоб работать не должно, раз результат выражения там в чарсет коннекта конвертируется.Пути огнептица неисповедимы... :)
BLOB CHARSET NONE не конвертируется в строку чарсета подключения, так как сервер не знает как приводить из NONE к UTF8.
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39732270
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devIBExpert, с какой версии?

Что с какой версии?

rdb_devа не могли бы уважаемые разработчики поправить интерпретацию строки EXCEPTION, чтобы она воспринималась не как строка с кодировкой NONE, а как строка с кодировкой подключения - как её выплёвывает сервер?

Таки выяснили, что EXCEPTION something <expression> желает видеть результат <expression> в чарсете коннекта.
И тебе его в том же чарсете отдает. Чего же тебе еще надобно, старче?
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39732273
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devfbclient считает, что полученная строка исключения в кодировке NONEfbclient ничего не считает. И не отображает.

Дальше не читал
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39732284
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_dev,

как раз наоборот. Текст исключения отдаётся как есть. А вот как его интерпретировать должна думать программа. Там по сути набор байтов.

IBExpert,

какая галка там включает интерпретацию исключений в чарсете коннета? Лично у меня в эксперименте 21732656 эксперт всегда показывает кракозябры
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39732291
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денискакая галка там включает интерпретацию исключений в чарсете коннета? Лично у меня в эксперименте 21732656 эксперт всегда показывает кракозябры

Смотря где показывает. Если на закладке "Сообщения" под редактором запросов, то там utf8 детектируется и конвертируется.
Никакой специальной галки нет.
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39732302
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IBExpertПривести возможно:
Код: plsql
1.
2.
3.
select cast('бла-бла' as varchar(100) character set none),
       cast(cast('бла-бла' as varchar(100) character set win1251) as varchar(100) character set none)
from rdb$database

Другое дело, что это будет уже не utf8, а EXCEPTION ожидает там строку с чарсетом коннекта.И в самом деле... Спасибо за наводку!
Теперь понятно откуда был Malformed string - я пытался соединить строки разных кодировок.

IBExpertНо у тебя желания тоже странные: коннект в utf8, а исключения тебе подавай в win1251...Вот твой пример в твоём же IBExpert:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
SET TERM ^;
CREATE OR ALTER PROCEDURE TEST__SP
  RETURNS
  (
    tmstmp TIMESTAMP
  )
AS
  DECLARE VARIABLE msg VARCHAR(1023) CHARACTER SET UTF8
    DEFAULT 'Бла-';
BEGIN
  EXCEPTION my_exception Cast(:msg || 'бла' AS VARCHAR(1023) CHARACTER SET NONE);
  tmstmp = CURRENT_TIMESTAMP;
  SUSPEND;
END^
SET TERM ;^


Результат на картинке.
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39732307
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
с
Код: plsql
1.
EXCEPTION my_exception Cast(:msg || 'бла' AS VARCHAR(1023) CHARACTER SET UTF8);

или
Код: plsql
1.
EXCEPTION my_exception :msg || 'бла';

тоже самое.
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39732308
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IBExpert,

ах вон оно что. Ну да если там, то всё нормально

Код: sql
1.
2.
3.
4.
5.
6.
EXECUTE BLOCK
AS
    DECLARE VARIABLE MSG VARCHAR(200) = 'Привет ';
BEGIN
  EXCEPTION E_CUSTOM_ERROR cast(:msg || 'Мир' as varchar(200) CHARACTER set utf8);
END



работает, но если блок или процедура возвращает result set, то уже показывается окошко как у rdb_dev и там кракозябры
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39732310
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladrdb_devfbclient считает, что полученная строка исключения в кодировке NONEfbclient ничего не считает. И не отображает.Понятно, что не отображает. Отображает приложение.

hvladДальше не читалА зря! :)
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39732314
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисIBExpert,
ах вон оно что. Ну да если там, то всё нормально
Код: sql
1.
2.
3.
4.
5.
6.
EXECUTE BLOCK
AS
    DECLARE VARIABLE MSG VARCHAR(200) = 'Привет ';
BEGIN
  EXCEPTION E_CUSTOM_ERROR cast(:msg || 'Мир' as varchar(200) CHARACTER set utf8);
END

работает, но если блок или процедура возвращает result set, то уже показывается окошко как у rdb_dev и там кракозябрыДа, "бла-бла" отображается корректно, но не в MessageBox'е, а в окошке сообщений и притом, что это неселективная ХП.
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39732319
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИХМО этот простой messagebox надо бы переделать на окно вывода ошибки в более структурированном виде. С выводом SQLSTATE, SQLCODE, GDSCODE, наименованием exception, если оно есть и выводом текста исключения в прокручиваемый мемо. В этот же диалог можно добавить и кнопку переключения в utf8 отображения или жёстко автоматом конвертировать если коннект utf8
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39732338
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подытожу:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
SET TERM ^;
CREATE OR ALTER PROCEDURE TEST__SP
  RETURNS
  (
    tmstmp TIMESTAMP
  )
AS
--  DECLARE VARIABLE msg VARCHAR(1023) CHARACTER SET UTF8 DEFAULT 'Бла-';
-- Работает с кракозябрами в MessageBox'е

  DECLARE VARIABLE msg VARCHAR(1023) CHARACTER SET WIN1251 DEFAULT 'Бла-';
-- Если "EXCEPTION my_exception Cast(:msg AS VARCHAR(1023) CHARACTER SET NONE)"
-- Результат: Malformed string
-- Если "EXCEPTION my_exception Cast(:msg AS BLOB CHARACTER SET NONE)"
-- Результат: Бла-бла при кодировке по умолчанию WIN1251 на ОС клиента
BEGIN
  msg = msg || 'бла';
  EXCEPTION my_exception Cast(:msg AS BLOB CHARACTER SET NONE);
  tmstmp = CURRENT_TIMESTAMP;
  SUSPEND;
END^
SET TERM ;^
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39732342
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При этом, "Бла-бла" на клиенте в MessageBox'е отображается корректно независимо от кодировки подключения (WIN1251 или UTF8), но при условии, что кодировка по умолчанию для ОС клиента WIN1251.
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39732349
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_dev,

проще Алексадра попросить, чтобы он в диалоге вывода ошибки учитывал чарсет коннекта. А уж в своей программе сам как нибудь.
Все эти изобретения с BLOB конвертацией гавнокод
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39732421
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис, если бы дело было только в IBExpert, я бы с тобой согласился, но в isql ситуация не лучше...
При смене кодировки консоли cmd - "chcp 65001" даже если использовать в isql "set names utf8;" выдаётся только первый символ строки исключения. Приходится использовать кодовую страницу консоли cp1251 - "chcp 1251", чтобы isql, при "set names utf8;", перекодировал utf8 в win1251, но в этом случае, если мы в EXCEPTION пихаем строку utf8, она также выдается кракозябрами и также, как и в случае с IBExpert, спасает приведение к BLOB CHARACTER SET NONE. Результат примера без приведения к BLOB:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
C:\Windows\System32>chcp 1251
Текущая кодовая страница: 1251

C:\Windows\System32>isql
Use CONNECT or CREATE DATABASE to specify a database
SQL> CONNECT "127.0.0.1:test_db" USER sysdba PASSWORD masterke;
Database:  "127.0.0.1:test_db", User: sysdba
SQL> set sql dialect 3;
SQL> set names utf8;
SQL> SELECT * FROM TEST__SP;

                   TMSTMP
=========================
Statement failed, SQLSTATE = HY000
exception 3
-MY_EXCEPTION
-Бла-бла
-At procedure 'TEST__SP' line: 9, col: 3
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39732424
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисработает, но если блок или процедура возвращает result set, то уже показывается окошко как у rdb_dev и там кракозябры

Про модальное окошко то я забыл.
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39732427
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devПриходится использовать кодовую страницу консоли cp1251 - "chcp 1251", чтобы isql, при "set names utf8;", перекодировал utf8 в win1251isql - перекодировал ? OMG
Давай ещё
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39732430
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad, а "кто" перекодировал? Если кодовая страница консоли cmd - 1251, а в isql прописано "set names utf8", то кто именно занимается конвертацией WIN1251->UTF8, при отправке запроса на сервер, и обратной конвертацией - при получении результата?
Код: plaintext
1.
2.
3.
4.
SQL> SELECT 'Тестовое сообщение' FROM oneRow;

CONSTANT
==================
Тестовое сообщение
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39732435
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_dev,

твоё set names после коннекта - до лампочки
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39732438
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad, да, я уже понял. Надо делать "isql -ch utf8"
Код: plaintext
1.
2.
3.
4.
SQL> SELECT 'Тестовое сообщение' FROM oneRow;
Statement failed, SQLSTATE = 22000
Dynamic SQL Error
-SQL error code = -104
-Malformed string
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39732439
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_dev,

про SET NAMES ты конечно же пропустил мимо ушей
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39732449
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис, в смысле "пропустил мимо ушей"?
Берем самый простой пример со строкой исключения в UTF8:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
SET TERM ^;
CREATE OR ALTER PROCEDURE TEST__SP
  RETURNS
  (
    tmstmp TIMESTAMP
  )
AS
  DECLARE VARIABLE msg VARCHAR(1023) CHARACTER SET UTF8 DEFAULT 'Бла-';
BEGIN
  EXCEPTION my_exception :msg || 'бла';
  tmstmp = CURRENT_TIMESTAMP;
  SUSPEND;
END^
SET TERM ;^

Если у нас в cmd кодовая страница 1251 (chcp 1251), то при запуске isql без каких-либо параметров командной строки получаем:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
C:\Windows\System32>isql
Use CONNECT or CREATE DATABASE to specify a database
SQL> CONNECT "127.0.0.1:test_db" USER sysdba PASSWORD masterke;
Database:  "127.0.0.1:test_db", User: sysdba
SQL> set sql dialect 3;
SQL> SELECT * FROM TEST__SP;

                   TMSTMP
=========================
Statement failed, SQLSTATE = HY000
exception 3
-MY_EXCEPTION
-Бла-бла
-At procedure 'TEST__SP' line: 9, col: 3

Но если запускаем как "isql -ch win1251", получаем то, что нужно:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
C:\Windows\System32>isql -ch win1251
Use CONNECT or CREATE DATABASE to specify a database
SQL> CONNECT "127.0.0.1:test_db" USER sysdba PASSWORD masterke;
Database:  "127.0.0.1:test_db", User: sysdba
SQL> set sql dialect 3;
SQL> SELECT * FROM TEST__SP;

                   TMSTMP
=========================
Statement failed, SQLSTATE = HY000
exception 3
-MY_EXCEPTION
-Бла-бла
-At procedure 'TEST__SP' line: 9, col: 3
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39732453
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всё!... Всем спасибо!
Вопрос к разработчикам снят. Остался только вопрос к Александру - почему в MessageBox'е IBExpert'а кракозябры? :)
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39732454
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devПри смене кодировки консоли cmd - "chcp 65001" даже если использовать в isql "set names utf8;" выдаётся только первый символ строки исключения.Это бага виндового рантайма. Старая и, вроде, вполне общеизвестная.Приходится использовать кодовую страницу консоли cp1251 - "chcp 1251", чтобы isql, при "set names utf8;"А это бага пользователя - кодировка подключения обязана соответствовать кодировке консоли:
Код: plaintext
1.
 chcp 1251
 isql -ch WIN1251 ...
и никаких сус..., тьфу, UTF8.
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39732455
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_dev,

ну вот всё работает с utf8

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
d:\fb\fb40>chcp 65001
Active code page: 65001

d:\fb\fb40>isql
Use CONNECT or CREATE DATABASE to specify a database
SQL> set names utf8;
SQL> connect 'inet4://localhost/test' user SYSDBA password 'masterkey';
Database: 'inet4://localhost/test', User: SYSDBA
SQL> SELECT * FROM TEST__SP;

                   TMSTMP
=========================
Statement failed, SQLSTATE = HY000
exception 2
-MY_EXCEPTION
-Бла-бла
-At procedure 'TEST__SP' line: 9, col: 3
SQL>

так что проблема в обработке исключения на стороне клиентского приложения. IBExpert у себя исправит, а ты в своём приложении сам разгребай. Не надо через конвертацию в BLOB делать, это криво
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39732456
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov,

ну может в XP. У меня на Win7 всё нормально отработало. В конце концов можно и PowerShell для извращенцев запустить
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39732461
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисBasil A. Sidorov,

ну может в XP. У меня на Win7 всё нормально отработало. В конце концов можно и PowerShell для извращенцев запуститьУ меня тоже Win7 Pro SP1 лицуха, но мне не повезло:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
C:\Windows\System32>chcp 65001
Active code page: 65001

C:\Windows\System32>isql -ch utf8
Use CONNECT or CREATE DATABASE to specify a database
SQL> CONNECT "127.0.0.1:test_db" USER sysdba PASSWORD masterke;
Database:  "127.0.0.1:test_db", User: sysdba
SQL> set sql dialect 3;
SQL> SELECT * FROM TEST__SP;

                   TMSTMP
=========================
Statement failed, SQLSTATE = HY000
exception 3
-MY_EXCEPTION
-Р
-At procedure 'TEST__SP' line: 9, col: 3

Симонов Денистак что проблема в обработке исключения на стороне клиентского приложения. IBExpert у себя исправит, а ты в своём приложении сам разгребай. Не надо через конвертацию в BLOB делать, это кривоЯ уже понял, что проблема была в IBExpert, а не в сервере и клиенте FirebirdSQL и что через BLOB делать не надо.
Просто с этими кодировками не сразу и поймёшь - откуда у проблемы ноги растут.
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39732462
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисну может в XP. У меня на Win7 всё нормально отработало.

Вывод - работает нормально. Ввод с клавиатуры - завершает программу на первой нелатинской
букве.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39732463
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devЯ уже понял, что проблема была в IBExpert

Да охренеть...
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39732464
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисну может в XP.Я вас умоляю ...У меня на Win7 всё нормально отработало. В конце концов можно и PowerShell для извращенцев запустить"Не хватает памяти" на скриншоте "мощной точки" - стенания more, который не в состоянии "прожевать" UTF8.
ISQ из-за всё того же бага просто молча завершается.
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39732467
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

нынче в win10 уже можно и через bash запускать (linux subsytem on windows). Попробовал. Ничего так. Работоспособно
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39732472
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IBExpertrdb_devЯ уже понял, что проблема была в IBExpert

Да охренеть...Ладно, пусть будет не "проблема", а "временная трудность". :)
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39732479
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devЛадно, пусть будет не "проблема", а "временная трудность". :)

В эксперте с этим трудностей нет, utf8 он детектировать умеет. Только в твой-то клиент все равно "кракозябры" прилетят, которые тебе эксперт в том модальном окошке показывает.
А эксперт вовсе не обязан конвертировать текст эксепшена в чарсет коннекта. Там что угодно может прилететь, в том числе то, что в чарсет коннекта сконвертировать невозможно.
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39732485
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov,

мда... я был о powershell лучшего мнения. Ну я даже не знаю. Изобрели его вроде как 2006 году. Как можно до сих пор не поддерживать нормально Unicode
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39732488
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IBExpertА эксперт вовсе не обязан конвертировать текст эксепшена в чарсет коннекта. Там что угодно может прилететь, в том числе то, что в чарсет коннекта сконвертировать невозможно.Мы опытным путём с помощью isql и подсказками hvlad выяснили, что строка исключения прилетает уже в кодировке подключения, но вот почему в MessageBox'е IBExpert'а кракозябры, этого я сказать не могу. ;)
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39732493
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисBasil A. Sidorov,

мда... я был о powershell лучшего мнения. Ну я даже не знаю. Изобрели его вроде как 2006 году. Как можно до сих пор не поддерживать нормально UnicodeБолее того, PowerShell уже портирован на Линухи и к нему силами community создана куча расширений. Но, чот, не взлетает...
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39732496
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devстрока исключения прилетает уже в кодировке подключения

Угу, угу... Вызовешь эксепшен вот так

Код: plsql
1.
EXCEPTION VSE_PROPALO;



и прилетит то, что в RDB$EXCEPTIONS лежит в кодировке NONE.
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39732498
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IBExpertи прилетит то, что в RDB$EXCEPTIONS лежит в кодировке NONE.

И вот там-то, кстати, можно и твою вожделенную "кириллицу" держать, которая и прилетит "кириллицей" при любом чарсете коннекта.
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39732499
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IBExpertrdb_devстрока исключения прилетает уже в кодировке подключения
Угу, угу... Вызовешь эксепшен вот так
Код: plsql
1.
EXCEPTION VSE_PROPALO;

и прилетит то, что в RDB$EXCEPTIONS лежит в кодировке NONE.Тут согласен и с этим ты ничего сделать не можешь.
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39732500
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_dev,

попробую вечером isql линуховый запустить в win10. По идее должно нормально пойти
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39732505
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devи с этим ты ничего сделать не можешь.

Эксперт как раз делает: проверяет, является ли прилетевшее utf8, и если да - конвертирует в utf16.
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39732514
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисмда... я был о powershell лучшего мненияНу поленились делать собственный фильтр и используют штатную программу (more.exe) ...
Ну не доделали (другие программисты) работу с консолью ...
"Дело-то житейское" (ц) Карлсон и Малыш.

P.S.
Желающие могут сравнить работу find и findstr - тоже прикольно, но по своему ...
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39732515
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IBExpert,

ну для модальных окон это тоже неплохо бы сделать 21732790
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39732516
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IBExpertIBExpertи прилетит то, что в RDB$EXCEPTIONS лежит в кодировке NONE.И вот там-то, кстати, можно и твою вожделенную "кириллицу" держать, которая и прилетит "кириллицей" при любом чарсете коннекта.По мне так лучше бы IBExpert рассматривал этот NONE хлам из RDB$EXCEPTIONS как-будто он в кодировке подключения, чтобы уж если ловить кракозябры, так хоть было понятно - откуда они лезут. Но это моё личное ИМХО, а решать-то, конечно, тебе, как разработчику - оставить как есть или влепить галочку в регистрации БД для переключения режима восприятия строки исключения.
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39732517
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисну для модальных окон это тоже неплохо бы сделать

Да подрихтовал я уже то сообщение.
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39732523
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devПо мне так лучше бы IBExpert рассматривал этот NONE хлам из RDB$EXCEPTIONS как-будто он в кодировке подключения

Это что-то жутко интеллектуальное, наверное. Для ИИ. Моя не понимать...
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39732536
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IBExpertrdb_devПо мне так лучше бы IBExpert рассматривал этот NONE хлам из RDB$EXCEPTIONS как-будто он в кодировке подключения
Это что-то жутко интеллектуальное, наверное. Для ИИ. Моя не понимать...
Ну, вот жешь - ты писал:IBExpertУгу, угу... Вызовешь эксепшен вот так
Код: plsql
1.
EXCEPTION VSE_PROPALO;

и прилетит то, что в RDB$EXCEPTIONS лежит в кодировке NONE.Я это и имел в виду - что неплохо бы подобный прилетающий хлам, выдавать не "as is", а конвертировать, как будто прилетела строка в кодировке подключения.
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39732539
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_dev,

забей. Сказали же уже сделано
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39732556
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисrdb_dev,

забей. Сказали же уже сделаноТост: "Ну, за понимание!"
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39732626
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devЯ это и имел в виду - что неплохо бы подобный прилетающий хлам, выдавать не "as is", а конвертировать, как будто прилетела строка в кодировке подключения.

В куда конвертировать то, что как будто уже в кодировке подключения? Ерунду какую-то пишешь.
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39732710
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov, rdb_dev,

Симонов Дениснынче в win10 уже можно и через bash запускать (linux subsytem on windows).

попробую вечером isql линуховый запустить в win10. По идее должно нормально пойти

работает полёт нормальный

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
sim@DESKTOP-E3INAFT:/usr/bin$ isql-fb
Use CONNECT or CREATE DATABASE to specify a database
SQL> set names utf8;
SQL> connect 'inet://localhost:3053/test' user sysdba password 'masterkey';
Database: 'inet://localhost:3053/test', User: SYSDBA
SQL> select 'Привет мир' from rdb$database;

CONSTANT
==========
Привет мир

SQL> show version;
ISQL Version: LI-V3.0.2.32703 Firebird 3.0
Server version:
Firebird/Windows/AMD/Intel/x64 (access method), version "WI-V3.0.4.33054 Firebird 3.0"
Firebird/Windows/AMD/Intel/x64 (remote server), version "WI-V3.0.4.33054 Firebird 3.0/tcp (DESKTOP-E3INAFT)/P15:C"
Firebird/Linux/AMD/Intel/x64 (remote interface), version "LI-V3.0.2.32703 Firebird 3.0/tcp (DESKTOP-E3INAFT)/P15:C"
on disk structure version 12.0
SQL> SELECT * FROM TEST__SP;

                   TMSTMP
=========================
Statement failed, SQLSTATE = HY000
exception 1
-MY_EXCEPTION
-Бла-бла
-At procedure 'TEST__SP' line: 9, col: 3
SQL>
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39732763
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Дениспопробую вечером isql линуховый запустить в win10. По идее должно нормально пойтиработает полёт нормальныйВ линуксе консоль другая и этой проблемы с UTF8 там нет.
Есть немножко другая проблема, но "там" у меня нет "статистики" - всего одна старая КраснаяШляпа.

В десятке UTF8 и в "обычной" консоли может заработать - там в очередной раз "всё переделали".
Не уверен, правда, что эта переделка общедоступна - пилили, вроде, для злосчастной 1809.
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39732769
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IBExpertrdb_devЯ это и имел в виду - что неплохо бы подобный прилетающий хлам, выдавать не "as is", а конвертировать, как будто прилетела строка в кодировке подключения.

В куда конвертировать то, что как будто уже в кодировке подключения? Ерунду какую-то пишешь.Конвертировать в UTF-16, разумеется - в ту кодировку, что используется функциями WINAPI для вывода символов UNICODE в окошечки, менюшечки и прочие мастдайные рюшечки.
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39732773
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devКонвертировать в UTF-16, разумеется - в ту кодировку, что используется функциями WINAPI для вывода символов UNICODE в окошечки, менюшечки и прочие мастдайные рюшечки.

Ты что ли WIN1251 у себя не видишь без конвертирования в UTF16? Или тебе надо какую-нибудь ISO8859_2 сконвертировать в UTF16 "как будто" это WIN1251?
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39732811
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александр, не придирайся! Я же думал, что унутрях своего детища ты используешь "широкие" символы.
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39732812
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_dev,

уже давно известно что Expert написан на старых Delphi, и не переезжал на Delphi 2009+
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39733074
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
14.11.2018 9:28, Симонов Денис пишет:
> уже давно известно что Expert написан на старых Delphi, и не переезжал на Delphi 2009+

сейчас набегут щколотики и начнут подпрыгивать: "пАзор! старьё! на свалку!"...

гы: шо, и даже дженериков нету?!!
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39733084
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий,

не школьники за позорят за то что вообще на Delphi написано, причём не важно на каком.

З.Ы. А дженерики штука полезная. По крайней мере с ними удобней, чем без них
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39733093
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
14.11.2018 15:59, Симонов Денис пишет:
> А дженерики штука полезная. По крайней мере с ними удобней, чем без них

это возрастное. это скоро пройдёт.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39733128
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий,

К сожалению, бросил дельфи раньше, чем дорос до дженериков.
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39733132
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
14.11.2018 17:24, WildSery пишет:
> К сожалению, бросил дельфи раньше, чем дорос до дженериков.

зря ты это.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39733136
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий,

тенденция сэр. Сейчас почти все веб и облака хотят, а то и вовсе на планшетике/мобильнике. И хотя эмберкадера утверждает что у неё уже и там работает, как-то не стремится народ
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39733151
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
14.11.2018 17:39, Симонов Денис пишет:
> тенденция сэр. Сейчас почти все веб и облака хотят, а то и вовсе на планшетике/мобильнике.

питарасы, сэр! (С)

> И хотя эмберкадера утверждает что у неё уже и там работает, как-то не стремится народ

дебаркадер всё никак не утонет...
но и стремиться туда тоже нафик нужно.
труЪ-программизмЪ == С++
а С# == труЪ-онанизмЪ
(школьникам оно конечно ближе, ибо привычнее)
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39733156
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий> труЪ-программизмЪ == С++

Но не Delphi. :)

P.S. Да и плохо у EMBT c C++ - CPB не сахар.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39733181
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамДа и плохо у EMBT c C++ - CPB не сахар.

От допиливания clang вдруг потерял что-то?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39733230
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты его поюзай, особенно последние версии (ХЕ2 и выше) -
сам всё увидишь, думаю, все вопросы отпадут. При чём я
64бита не проверял - говорили, что он чуть ли не в 5-10
раз медленнее компилит (мне даже трудно представить,
что компиляцию CPB можно было замедлить в 10 раз).
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39733655
Василий 2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот так одним постом МП превращает толковый тред по FB во флудильню по Delphi. Щас еще старовер дефекатор должОн подтянуться для полного счастья
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39733687
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Василий 2,

да по фигу. ТС свою проблему уже решил
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #39733808
Vlad F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WildSeryМимопроходящий,

К сожалению, бросил дельфи раньше, чем дорос до дженериков.

На руководящую, не иначе, пошел. Ничего, это бывает, но по нонешним временам, проходяще. Я вот тоже, было, уходил, жизнь заставила вернуться, аккурат к дженерикам.))
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #40086401
guly2808
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов Денис,

Подскажите, в фб 4.0 такая же с исключениями проблема? Malformed string или придумали что-то?
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #40086403
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guly2808,

с исключениями ничего не менялось. Хотя при грамотной работе никаких Malformed string не возникает
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #40086467
guly2808
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов Денис,

Спасибо!
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #40087773
guly2808
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов Денис, Malformed string не возникает, но возникают кракозябры:

1. Кодировка подключения бд NONE
2. В FB3 дабы избежать malformed string - внутри триггера меняю кодировку на win1251 - исключение высвечивается кракозябрами
3. Если cast-ом менять на utf-8 опять malformed string
4. Преобразование сообщения исключения в тип данных blob - помогает в fb3, но не работает в fb2 - нужно чтобы и в fb2 корректно сообщение показывалось
5. Если менять кодировку подключения к БД - увы, идет ограничение алиасов в 33 знака, что недопустимо

Пожалуйста, помогите советом и идей, как сделать, чтобы исключения работали корректно, спасибо
...
Рейтинг: 0 / 0
напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
    #40087817
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guly28081. Кодировка подключения бд NONE

За это уже давно пора бить по рукам. Ибо именно в этом источник всех твоих проблем.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
115 сообщений из 115, показаны все 5 страниц
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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