|
Firebird 2.5.9 MalformedSring
|
|||
---|---|---|---|
#18+
Всем привет. Пытаюсь выполнить запрос в IBExpert Код: plsql 1.
и получаю ошибку Код: plsql 1. 2. 3. 4.
На самом деле вытащил эту часть из другого стэйтмента, который давал точно такую же ошибку. Что в строке не так? Firebird 2.5.9.27139 x64, Windows 10. Соединение выполенно с Charset 'UTF8'. PS: Так как сайт корежит символы, вложил текстовый файл с оригинальным запросом. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2020, 13:07 |
|
Firebird 2.5.9 MalformedSring
|
|||
---|---|---|---|
#18+
Лично я и в блокноте/Far наблюдаю бессмысленную фигню. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2020, 13:24 |
|
Firebird 2.5.9 MalformedSring
|
|||
---|---|---|---|
#18+
Basil A. Sidorov, в лебедевском декодере тоже бредятина. #178;Б┌╛ЖЖДЖЭЭЖl HTML-Entities -> CP1250 -> KOI8-R видимо, какая-то каша из хтмл-кодировки и прочего. из блокнота тоже фигня: CP1252->ISO-8859-5 В блокноте не задан юникодный BOM? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2020, 13:28 |
|
Firebird 2.5.9 MalformedSring
|
|||
---|---|---|---|
#18+
kdv, очень может быть. Сохранял в Блокноте, как UTF8. Там стоят немецкие умляуты и пара специфических символов. Сейчас попробовал на версии с тем же номером, но х32 - проблема повторяется. Оригинальный запрос был на Insert. Попробовал заносить данные через переменную - результат тот же: как только добавляю любой умляут, сразу сообщение о malformed string. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2020, 13:38 |
|
Firebird 2.5.9 MalformedSring
|
|||
---|---|---|---|
#18+
svd, В этом вложении уже точно с BOM. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2020, 13:41 |
|
Firebird 2.5.9 MalformedSring
|
|||
---|---|---|---|
#18+
Проследи, что эта переменная именно в utf-8, выведя двоичные коды символов и сверив их с таблицей. Если она строковая - убедись, что не происходит дополнительного преобразования в компонентах доступа. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2020, 13:42 |
|
Firebird 2.5.9 MalformedSring
|
|||
---|---|---|---|
#18+
svd, так в блокноте и видны одни умляуты - ööäöüüö. Это разве какой-то осмысленный текст? Умляуты, вообще-то, вполне нормально и в win1252 имеются. Так-то да, у вас там по 2 байта на символ, но оно привычными способами че-то никак не расшифровывается. Попутно вопрос - в ИБЕ, раз указана кодировка utf8, галка do NOT perform conversion from/to UTF8 надеюсь, убрана? Откуда вообще эта строка? В дельфи в примитивном приложении по кнопке что выдаст IsUTF8String или UTF8Decode? Может это как раз просто WideString? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2020, 13:50 |
|
Firebird 2.5.9 MalformedSring
|
|||
---|---|---|---|
#18+
kdv, Во фразе смысла, конечно, нет. Просто при тесте решили проверить как будет проходить работа со специальными символами, как умяуты и похожая дребедень у французов. И вот выкидывает сообщение, что не может провести Insert в таблицу. Эмпирическим путем найдена эта строка, попытался ее просто вывести с помощью rdb$database - выкидывает туже ошибку. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2020, 13:56 |
|
Firebird 2.5.9 MalformedSring
|
|||
---|---|---|---|
#18+
svd, гм. Если строка пришла из Delphi, то это widestring (utf-16), двухбайтовая кодировка. Firebird не умеет такое хранить, только UTF8. Поэтому, когда указан чарсет коннекта UTF8, widestring конвертируется в uft8 и отправляется на сервер, и наоборот преобразуется с сервера (из utf8 в widestring). Преобразуется - компонентами. Компоненты знают, что сейчас в дельфи widestring. widestring - фиксированный формат. uft8 -плавающий (от одного до 3 или 4х байт на символ). Поэтому, если откуда-то брать некие не-UTF8 байты, и пытаться их засунуть в базу как uft8 без соответствующих перекодировок - странно. https://forum.sources.ru/index.php?act=Attach&type=post&id=2635238&attach_id= ну и, тестировать надо на каком-то осмысленном тексте. Иначе на входе бурда, и на выходе бурда, и мы не понимаем, сконвертировалось оно нормально или нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2020, 14:07 |
|
Firebird 2.5.9 MalformedSring
|
|||
---|---|---|---|
#18+
svd, короче. чарсет коннекта UTF8 указывает, что в ФБ символы приходят в этом формате. Если эти данные надо сохранить в строку с кодировкой UTF8 - никаких преобразований не происходит. А если у строки win1251, сервер будет внутри себя конвертировать utf8 в win1251. Собственно, при чарсете коннекта utf8 и строках utf8 ошибка malformed string означает только одно - что в фб приехала строка НЕ в utf8. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2020, 14:12 |
|
Firebird 2.5.9 MalformedSring
|
|||
---|---|---|---|
#18+
kdv, ok. Открываю IBExpert, пишу запрос select 'Götten wurden entteuscht' from rdb$database запускаю и получаю Invalid token. Dynamic SQL Error. SQL error code = -104. Malformed string. При этом я могу без проблем внести в любой столбец любой таблицы, где стоит character set utf8, любые символы. Даже китайские иероглифы. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2020, 14:54 |
|
Firebird 2.5.9 MalformedSring
|
|||
---|---|---|---|
#18+
svdОткрываю IBExpert, пишу запрос Прямо с клавиатуры пишешь? Тогда этот топик нужно переместить в соответствующий подфорум. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2020, 14:56 |
|
Firebird 2.5.9 MalformedSring
|
|||
---|---|---|---|
#18+
svd Открываю IBExpert, пишу запрос select 'Götten wurden entteuscht' from rdb$database "Я так думаю!" (с) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2020, 15:03 |
|
Firebird 2.5.9 MalformedSring
|
|||
---|---|---|---|
#18+
svd, если так не ругается select cast('Götten wurden entteuscht' AS VARCHAR(300) CHARACTER SET UTF8 ) from rdb$database значит кодировка БД не UTF8 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2020, 15:12 |
|
Firebird 2.5.9 MalformedSring
|
|||
---|---|---|---|
#18+
svd, это кодировка подключения для БД: select RDB$CHARACTER_SET_NAME from RDB$DATABASE ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2020, 15:37 |
|
Firebird 2.5.9 MalformedSring
|
|||
---|---|---|---|
#18+
svd, Только что проверил запрос select cast('Götten wurden entteuscht' AS VARCHAR(300) CHARACTER SET UTF8 ) from rdb$database и на 2.5.9 и на 3.0.7 отрабатывает без проблем. Коннект UTF8 база WIN1251. Проблемы твои скорее всего из-за винды, на ней помню такая же необъяснимая дичь была с кодировкой. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2020, 15:53 |
|
Firebird 2.5.9 MalformedSring
|
|||
---|---|---|---|
#18+
demon1992, Спасибо! Проверил так же. На рабочем сервере стоит ФБ той же версии, но х64. На своей я пробовал версию 2.5.5 и тоже ошибку выбрасывает, но все win32. Сейчас у двух коллег попробовали, тоже сообщают, что у них все без проблем идет. Хоть теперь понятно в какую сторону нужно копать. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2020, 16:18 |
|
Firebird 2.5.9 MalformedSring
|
|||
---|---|---|---|
#18+
svd, вот не в том направлении надо копать. - Firebird 2.5.9.27139, 32bit, windows 10 enterprise 64bit, русская - create database utf8 character set utf8; - чарсет коннекта -utf8 - ibe версии 2020.4.1.1. - rdb$database.rdb$character_set_name = UTF8. - select 'Götten wurden entteuscht' from rdb$database выполняется отлично, никаких ошибок, выдает заданное в строке ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2020, 16:45 |
|
Firebird 2.5.9 MalformedSring
|
|||
---|---|---|---|
#18+
kdv, А поточнее? из приведенного списка, только "windows 10 Enterprise НЕ русская". сейчас поиски идут в напревлении: - неправильно установленный firebird. Неправильно его трудно установить, но на моем персональном компьютере из-за разных версий может быть. Хотя на сервере установка была на чистую Windows без ничего, но проверить не мешает. - обнаружились отличные версии IBExpert. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2020, 17:02 |
|
Firebird 2.5.9 MalformedSring
|
|||
---|---|---|---|
#18+
[quot svd#22237342]kdv, Да, еще забыл указать: names в базе iso8859_1 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2020, 17:05 |
|
Firebird 2.5.9 MalformedSring
|
|||
---|---|---|---|
#18+
svdДа, еще забыл указать: names в базе iso8859_1 я не пойму, к чему тогда этот топик затевать. А у столбцов какие кодировки? Зачем указывать чарсет коннекта utf8, если у столбцов в базе не utf8, например? в надежде что "любой символ" из utf8 перекодируется в конкретную кодировку? Так нет же. Почему всю инфу надо выколупывать? Я в одном комменте выдал абсолютно всё что было надо. svd- неправильно установленный firebird. я не знаю, как можно "неправильно установить" ФБ из zip. распаковываем в любую папку, после чего в cmd запускаем из bin/ fbserver -a и всё работает. svd- обнаружились отличные версии IBExpert. ну и у кого старее - у меня или у вас? Опять еще один вопрос. Почему вы сразу при словах про "отличные" не можете привести свою версию ибэксперта из about? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2020, 17:13 |
|
Firebird 2.5.9 MalformedSring
|
|||
---|---|---|---|
#18+
kdv, У столбцов кодировка по умолчанию iso8859_1. Большинство столбцов имеют такую же. Столбец, который сообщает при обновлении о Malformed String имеет кодировку UTF8. IBExpert на моей машине имеет версию от 2018 года. У коллег, у кого все нормально - 2020. Firebird можно испортить хотябы тем, что обновив версию сервера, пропустить галку копирования библиотеки в системную папку и уже старая версия библиотеки будет давать головную боль. Еще вопрос, если обновить в rdb$database.rdb$character_set_name новое значение на UTF8, сделать бэкап-рестор, будет ли база и данные испорчена и сменит ли она default names на UTF8? Подозреваю, что столбцы с кодировкой ISO8859_1 так и останутся с ней, но это и надо. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2020, 18:08 |
|
Firebird 2.5.9 MalformedSring
|
|||
---|---|---|---|
#18+
svdЕще вопрос, если обновить в rdb$database.rdb$character_set_name новое значение на UTF8, сделать бэкап-рестор а бэкап-рестор то зачем? Вы не в курсе, что даёт чарсет базы? Это просто дефолтное значение чарсета для новых строковых столбцов (у которых кодировка не указана). Если новых столбцов нет, то изменение чарсета БД вам ничего не даст. p.s. подозреваю, что исходный глюк в старом ibexpert. надо было сразу в isql проверять. Или из приложения. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2020, 18:46 |
|
|
start [/forum/topic.php?fid=40&fpage=10&tid=1560183]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
60ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
66ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 190ms |
0 / 0 |