powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / FB2.5.0 + ibpp + set charset
18 сообщений из 18, страница 1 из 1
FB2.5.0 + ibpp + set charset
    #40093056
pepelxl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Господа подскажите пожалуйста как и возможно ли вообще задать перекодировку данных при получении ?
База , предположительно содержит данные в кодировке ISO-8859-1(лягушатники). В RDB$CHARACTER_SET_NAME NULL.
используя IBpp возможно указать , что бы данные возвращались в utf-8?
Я так понимаю, что здесь аргумент задаёт только как общается Ibpp c сервером.
Код: plaintext
1.
IBPP::Database db = IBPP::DatabaseFactory("localhost", "target.FDB", "sysdba", "masterkey","","UTF8","");


как задать в какой кодировке находятся данные?
или мучатся с перекодированием внутри программы?
...
Рейтинг: 0 / 0
FB2.5.0 + ibpp + set charset
    #40093065
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
25.08.2021 12:18, pepelxl пишет:
> как задать в какой кодировке находятся данные?
> или мучатся с перекодированием внутри программы?

если в базе NONE, то это жопа.
с большой буквой Ж.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
FB2.5.0 + ibpp + set charset
    #40093073
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pepelxlВ RDB$CHARACTER_SET_NAME NULL.

У кого? У базы или у конкретных полей с данными?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
FB2.5.0 + ibpp + set charset
    #40093077
pepelxl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прошу прощения, я совсем далёк от субд.
В RDB$DATABASE колонка RDB$CHARACTER_SET_NAME содержит NONE
Но в IBexpert если нажать на три точки в данных - отображается правильная строка в utf8
...
Рейтинг: 0 / 0
FB2.5.0 + ibpp + set charset
    #40093079
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pepelxlПрошу прощения, я совсем далёк от субд.

Ну так или приблизься или "отойди и ничего не трогай".

pepelxlВ RDB$DATABASE колонка RDB$CHARACTER_SET_NAME содержит NONE

Это ничего не значит. Покажи DDL конкретной таблицы из того самого IBExpert.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
FB2.5.0 + ibpp + set charset
    #40093080
pepelxl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У самих полей тоже стоит NONE
...
Рейтинг: 0 / 0
FB2.5.0 + ibpp + set charset
    #40093083
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pepelxlБаза , предположительно содержит данные в кодировке ISO-8859-1(лягушатники).

pepelxlв IBexpert если нажать на три точки в данных - отображается
правильная строка в utf8

pepelxlУ самих полей тоже стоит NONE

Как минимум одно из этих утверждений ложно.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
FB2.5.0 + ibpp + set charset
    #40093086
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pepelxl
возможно ли вообще задать перекодировку данных при получении ?

1. Для этого данные в столбце должны соответствовать описанию в метаданных.
2. Кодировка none в описании столбца ставит на перекодировании сервером жирный крест.
3. Если исполнен пункт 1, то сервер автоматом перекодирует данные в чарсет коннекта (если таковая перекодировка возможно в принципе, в утф8 из не юникода все вполне себе перекодируется).
pepelxl
мучатся с перекодированием внутри программы?
можно запрос каждого строкового поля обрамить cast-ом в требуемую кодировку, да под термин "мучаться" это вполне подходит.
...
Рейтинг: 0 / 0
FB2.5.0 + ibpp + set charset
    #40093097
pepelxl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я туповат, но понимаю куда все клонят, кроме этого:
Ivan_Pisarevsky
можно запрос каждого строкового поля обрамить cast-ом в требуемую кодировку,


DDL/******************************************************************************/
/*** Generated by IBExpert 25.08.2021 13:54:16 ***/
/******************************************************************************/

/******************************************************************************/
/*** Following SET SQL DIALECT is just for the Database Comparer ***/
/******************************************************************************/
SET SQL DIALECT 3;



/******************************************************************************/
/*** Tables ***/
/******************************************************************************/



CREATE TABLE PARAM (
PARID INTEGER NOT NULL,
PARLIBMP VARCHAR(1024),
PARLIBUNIT VARCHAR(1024),
PARDISC BOOL /* BOOL = SMALLINT DEFAULT NULL CHECK (VALUE IN (0,1) OR VALUE IS NULL) */,
PARVALMIN FLOAT,
PARVALMAX FLOAT,
PARNAME VARCHAR(64),
PARAIDE VARCHAR(1024),
PARFORMAT VARCHAR(5),
PARIDCONF SMALLINT,
PARAIDEVAL VARCHAR(1024),
PARAIDEMODE TPMAIDEMODETYPE /* TPMAIDEMODETYPE = VARCHAR(16) DEFAULT NULL CHECK (VALUE IN ('ONSCREEN', 'POPUP', 'XMLFILE') OR VALUE IS NULL) */,
PARAIDEFILE VARCHAR(32),
PARGRAPHICDISPLAY BOOL /* BOOL = SMALLINT DEFAULT NULL CHECK (VALUE IN (0,1) OR VALUE IS NULL) */,
PARFORMATMATCH VARCHAR(128),
PARFORMATREPLACE VARCHAR(128),
PARFORMATTYPE VARCHAR(32)
);




/******************************************************************************/
/*** Primary keys ***/
/******************************************************************************/

ALTER TABLE PARAM ADD CONSTRAINT PK_PARAM PRIMARY KEY (PARID);


/******************************************************************************/
/*** Indices ***/
/******************************************************************************/

CREATE INDEX IX_PARAM_PARNAME ON PARAM (PARNAME);


/******************************************************************************/
/*** Privileges ***/
/******************************************************************************/


однако как ibexpert узнаёт из чего строить?
...
Рейтинг: 0 / 0
FB2.5.0 + ibpp + set charset
    #40093100
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pepelxl

однако как ibexpert узнаёт из чего строить?


Из системных таблиц. База-то большая? Сколько данных/метаданных?
...
Рейтинг: 0 / 0
FB2.5.0 + ibpp + set charset
    #40093107
pepelxl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну, честно слово - не знаю вашего сленга.
79 таблиц, 500MB. много мало это?
Мне надо, найти несколько зависимостей и сделать выборку.
Сейчас установил charset на нужную колонку, получил в IBpp правильные строки.
Однако если получится в конце что то дельное , то хотел бы выбросить прогу на профильный форум, соответственно люди не будут заниматься лазаньем и редактированием баз.
...
Рейтинг: 0 / 0
FB2.5.0 + ibpp + set charset
    #40093109
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pepelxl
Я туповат, но понимаю куда все клонят, кроме этого:
Ivan_Pisarevsky
можно запрос каждого строкового поля обрамить cast-ом в требуемую кодировку,
select t.varcharfield, cast(t.varcharfield as varchar(100) character set utf8) as f1 from sometable t

Присоединюсь к версии ДС, что данные в базе уже в утф, а не в однобайтной кодировке.
...
Рейтинг: 0 / 0
FB2.5.0 + ibpp + set charset
    #40093110
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pepelxlОднако если получится в конце что то дельное , то хотел бы выбросить прогу на
профильный форум, соответственно люди не будут заниматься лазаньем и
редактированием баз.

Почему бы не обратиться к хозяину базы?

Нет, я понимаю, что она скорее всего сворованная, но вдруг...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
FB2.5.0 + ibpp + set charset
    #40093111
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вариант лечения базы не рассматривается? Или она уже растиражирована?
...
Рейтинг: 0 / 0
FB2.5.0 + ibpp + set charset
    #40093113
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan_Pisarevsky

Присоединюсь к версии ДС, что данные в базе уже в утф, а не в однобайтной кодировке.


На скриншоте видно, что там не utf8.
...
Рейтинг: 0 / 0
FB2.5.0 + ibpp + set charset
    #40093114
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pepelxl
79 таблиц, 500MB. много мало это?
это не много. :)
pepelxl
Сейчас установил charset на нужную колонку, получил в IBpp правильные строки.
Сделать для всех строковых полей и забыть о проблеме.
...
Рейтинг: 0 / 0
FB2.5.0 + ibpp + set charset
    #40093115
pepelxl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это базы автомобильной диагностики, поэтому автор на связь не выйдет, а хочется сделать со своим авто чуть больше, чем дают менюшки штатного приложения.
...
Рейтинг: 0 / 0
FB2.5.0 + ibpp + set charset
    #40093117
pepelxl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ivan_Pisarevsky
select t.varcharfield, cast(t.varcharfield as varchar(100) character set utf8) as f1 from sometable t

это заметил, попробую.
Спасибо всем откликнувшимся.
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / FB2.5.0 + ibpp + set charset
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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