Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / FireBird Charset NONE / 19 сообщений из 19, страница 1 из 1
13.11.2020, 11:00
    #40017830
cptngrb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FireBird Charset NONE
Досталась мне база FireBird 2.5 с полями кодировкой NONE, где данные отображаются кракозяблями, а должны русскими символами. В в самой базе вроде бы кодировка Win1251, но это не точно. Со структурой базы я делать ничего не могу, записывают в нее несколько программ и в какой кодировке не понятно.
Мне нужно на стороне Delphi 10 переконвертить кодировку и засунуть эти строки в memTable. Как лучше это сделать?
...
Рейтинг: 0 / 0
13.11.2020, 11:02
    #40017831
cptngrb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FireBird Charset NONE
При просмотре IBExpert'ом в таблице тоже кракозябли. хотя описания таблиц на русском нормально отображаются. Просто кто-то пишет в таблицу в непонятной кодировке, а мне нужно представить это в читаемом виде
...
Рейтинг: 0 / 0
13.11.2020, 11:11
    #40017837
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FireBird Charset NONE
В IBExpert пробуй в настройках подключения указывать ту или иную кодировку: utf8, win1251, например.

Сделай в Delphi простой проект с одной таблицей и в настройках подключения меняй кодировку и смотри, нормально ли стали отображаться данные в DBGrid.
...
Рейтинг: 0 / 0
13.11.2020, 11:18
    #40017841
cptngrb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FireBird Charset NONE
X11, в IBExpert пробовал utf8, win1251, ничего не меняется. Нужно все кодировки перебрать?
...
Рейтинг: 0 / 0
13.11.2020, 11:26
    #40017845
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FireBird Charset NONE
ты хоть пару картинок выложи, может кто визуально отгадает колировку...
кстати
https://habr.com/ru/post/147843/

или что-то вроде https://2cyr.com/decode/?lang=ru
...
Рейтинг: 0 / 0
13.11.2020, 11:28
    #40017847
alekcvp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FireBird Charset NONE
cptngrb
X11, в IBExpert пробовал utf8, win1251, ничего не меняется. Нужно все кодировки перебрать?

Можно попробовать в делфи получить из базы текст, засунуть его в буфер обмена, а потом засунуть в shtirlitz 4 и посмотреть в какой кодировке оно было изначально. Не 100% гарантия что сработает, но вдруг.
...
Рейтинг: 0 / 0
13.11.2020, 11:29
    #40017848
cptngrb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FireBird Charset NONE
Пока писал, разобрался. Кодировка Win1251 в самой строке, я ее сконвертировал с помощью TEncoding в UTF-8.
...
Рейтинг: 0 / 0
13.11.2020, 11:51
    #40017859
cptngrb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FireBird Charset NONE
а в самом IBExpert символы нормально не отображаются из-за того, что в таблице намешано несколько кодировок сразу
...
Рейтинг: 0 / 0
13.11.2020, 11:57
    #40017861
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FireBird Charset NONE
Может, у каждой записи есть какой-то поле, которое определяет кодировку?
Ну что это за бред, когда в одном поле таблицы куча кодировок? Получается, что каждая запись в своей какой-то кодировке?
...
Рейтинг: 0 / 0
13.11.2020, 12:18
    #40017867
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FireBird Charset NONE
13.11.2020 11:57, X11 пишет:
> Ну что это за бред, когда в одном поле таблицы куча кодировок?

не бред, а БАРДАК.

а бардак, как известно, автоматизировать нельзя! (С)

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
13.11.2020, 12:32
    #40017874
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FireBird Charset NONE
Есть две кодировки: кодировка подключения, которая говорит в какой кодировке данные будут поступать от клиента и в какой кодировке клиент ожидает данные от сервера. И кодировка поля, которая говорит в какой кодировке данные хранятся в этом поле. При общении с клиентом сервер занимается переконвертированием из одной в другую.

Кодировки OCTETS и NONE говорит, что конвертировать не нужно. Различия между ними такое
There are two specials character sets: NONE and OCTETS.
Both can be used in declarations but OCTETS can't be used in attachment.
They are very similar with the exception that space of NONE is ASCII 0x20 and space of OCTETS is 0x00.

Если у вас поле в базе в кодировке NONE, то вы на клиенте получаете просто набор байт, а как их конвертировать в строку - решайте сами
...
Рейтинг: 0 / 0
13.11.2020, 13:32
    #40017894
cptngrb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FireBird Charset NONE
Бардак, потому что проект древний и развивался долго. Одна программа писала в win1251, следующая в utf8, данных много, а может и по очереди
...
Рейтинг: 0 / 0
13.11.2020, 13:38
    #40017897
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FireBird Charset NONE
13.11.2020 13:32, cptngrb пишет:
> Бардак, потому что проект древний и развивался долго. Одна программа писала в win1251, следующая в utf8, данных много, а может и по очереди


Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
13.11.2020, 13:52
    #40017906
alekcvp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FireBird Charset NONE
cptngrb
Бардак, потому что проект древний и развивался долго. Одна программа писала в win1251, следующая в utf8, данных много, а может и по очереди

Теперь вы знаете для чего нужны кодировки в БД 😁
...
Рейтинг: 0 / 0
13.11.2020, 14:02
    #40017914
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FireBird Charset NONE
Несколько вариантов решения проблемы.

При чтении научиться программно определять кодировку и использовать события Persistent-столбцов НД для чтения/сохранения данных.

Перелить все данные в новую базу, где будет однозначная кодировка. Придется писать свою утилиту.

Попробовать отфильтровать, отсортировать данные, чтобы разделить их как-то по кодировкам. В итоге с помощью экспорта/импорта и конвертации перелить данные в новую базу.
...
Рейтинг: 0 / 0
13.11.2020, 14:04
    #40017915
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FireBird Charset NONE
Х11, не взлетит.

тут программист нужен (С)
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
13.11.2020, 14:21
    #40017924
cptngrb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FireBird Charset NONE
X11
При чтении научиться программно определять кодировку и использовать события Persistent-столбцов НД для чтения/сохранения данных.


так и сделал
...
Рейтинг: 0 / 0
13.11.2020, 14:38
    #40017939
cptngrb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FireBird Charset NONE
alekcvp
cptngrb
Бардак, потому что проект древний и развивался долго. Одна программа писала в win1251, следующая в utf8, данных много, а может и по очереди

Теперь вы знаете для чего нужны кодировки в БД 😁


Я знал, что нужно использовать одну, но в первый раз столкнулся с несколькими сразу
...
Рейтинг: 0 / 0
14.11.2020, 00:14
    #40018170
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FireBird Charset NONE
cptngrb,

Эх.... Застрелите меня :( Ну как так можно-то?
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / FireBird Charset NONE / 19 сообщений из 19, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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