powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
25 сообщений из 115, страница 2 из 5
напомните, плз, в каком 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
25 сообщений из 115, страница 2 из 5
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / напомните, плз, в каком CHARSET'е выплёвывается сообщение EXCEPTION - UNICODE_FSS?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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