Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Юникод в базе без конвертации в приложении / 25 сообщений из 49, страница 1 из 2
10.10.2017, 14:08:27
    #39534050
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Юникод в базе без конвертации в приложении
На сколько я знаю, то в сама среда Delphi использует UTF16? Или же UTF32? Речь, конечно же о юникодных версиях Дельфи.

http://docwiki.embarcadero.com/RADStudio/Tokyo/en/String_Types_(Delphi) The UnicodeString type has exactly the same structure as the AnsiString type. UnicodeString data is encoded in UTF-16.

Получается, что и приложение использует тоже UTF16?

К чему вопрос.
Если создавать базу, например, в Firebird, то какую кодовую страницу указывать, чтоб в компонентах доступа к базе не нужно было указывать кодировку, ну или чтобы DB-компонентам не приходилось выполнять конвертацию данных?
...
Рейтинг: 0 / 0
10.10.2017, 14:10:43
    #39534051
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Юникод в базе без конвертации в приложении
И вопрос в догонку.
Кто-нибудь переводил базу из ANSI (Win-1251) на юникод? На сколько это сложно?
...
Рейтинг: 0 / 0
10.10.2017, 14:16:01
    #39534061
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Юникод в базе без конвертации в приложении
X11например, в Firebird

Вот как раз с Firebird - обломись, она не умеет UTF-16. Как и подавляющее большинство
других СУБД. Поэтому все компоненты доступа обычно конвертируют текст в UTF-8.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
10.10.2017, 14:20:56
    #39534066
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Юникод в базе без конвертации в приложении
бери Лазаря.
у него utf-8.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
10.10.2017, 14:36:25
    #39534074
makhaon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Юникод в базе без конвертации в приложении
X11,

я так думаю - что через csv или аналог проще всего. мы у себя решили не возиться с конвертацией, а поддержали обе версии. новые базы у нас идут уже в utf, старые работают в 1251. всё работает без проблем.
...
Рейтинг: 0 / 0
10.10.2017, 14:36:58
    #39534076
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Юникод в базе без конвертации в приложении
...
Рейтинг: 0 / 0
10.10.2017, 14:37:22
    #39534077
makhaon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Юникод в базе без конвертации в приложении
utf8
...
Рейтинг: 0 / 0
10.10.2017, 14:37:24
    #39534078
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Юникод в базе без конвертации в приложении
Dimitry SibiryakovX11например, в Firebird

Вот как раз с Firebird - обломись, она не умеет UTF-16. Как и подавляющее большинство
других СУБД. Поэтому все компоненты доступа обычно конвертируют текст в UTF-8.

ничёси
...
Рейтинг: 0 / 0
10.10.2017, 14:38:32
    #39534081
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Юникод в базе без конвертации в приложении
makhaonX11,

я так думаю - что через csv или аналог проще всего. мы у себя решили не возиться с конвертацией, а поддержали обе версии. новые базы у нас идут уже в utf, старые работают в 1251. всё работает без проблем

Т.е. надо поддерживать два типа базы?
...
Рейтинг: 0 / 0
10.10.2017, 14:38:36
    #39534082
makhaon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Юникод в базе без конвертации в приложении
...
Рейтинг: 0 / 0
10.10.2017, 14:39:12
    #39534083
makhaon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Юникод в базе без конвертации в приложении
X11,

если баз довольно много и они большие - то проще так.
...
Рейтинг: 0 / 0
10.10.2017, 14:42:54
    #39534084
makhaon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Юникод в базе без конвертации в приложении
чарсет базы ищу так:

Код: sql
1.
select rdb$character_set_name as charset from rdb$database
...
Рейтинг: 0 / 0
10.10.2017, 14:43:44
    #39534085
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Юникод в базе без конвертации в приложении
makhaonX11,

если баз довольно много и они большие - то проще так.

Нет. Спасибо.
...
Рейтинг: 0 / 0
10.10.2017, 15:02:29
    #39534103
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Юникод в базе без конвертации в приложении
X11пока читаю
http://www.sql.ru/forum/1117075/izmenit-kodirovku-bazy
Брось. Читай http://www.ibase.ru/unicode_faq/
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
10.10.2017, 15:32:14
    #39534129
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Юникод в базе без конвертации в приложении
Читаю. Спасибо.

Я правильно понимаю, что если размер страницы 4096, то размер VARCHAR должен быть 1024?


А то ошибка:
Undefined name. Dynamic SQL Error. SQL error code = -204. Data type unknown. Implementation limit exceeded. COLUMN STR32K.
вот здесь:
Код: sql
1.
CREATE DOMAIN STR32K AS VARCHAR(32000);


Или это касается только индексов, где их размер должен быть 1/4 от размера страницы?
Просто ошибка даже там, где VARCHAR(8192).

Вообще, какой размер страницы рекомендуется для UTF8?


В разделе "Длина строковых столбцов и изменение ее размера" я не нашёл, как правильно рассчитать и указать размер строго поля/домена.
...
Рейтинг: 0 / 0
10.10.2017, 15:37:23
    #39534134
makhaon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Юникод в базе без конвертации в приложении
все строки, насколько я помню, занимают ровно в 4 раза больше места (по байтам). вот из этого можешь исходить.
...
Рейтинг: 0 / 0
10.10.2017, 15:39:57
    #39534138
makhaon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Юникод в базе без конвертации в приложении
авторVARCHAR(8192)

потому что максимальный размер VARCHAR в ansi не 32768
...
Рейтинг: 0 / 0
10.10.2017, 15:45:44
    #39534142
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Юникод в базе без конвертации в приложении
здесь https://firebirdsql.org/manual/ru/migration-mssql-data-types-ru.html
написано, что
Символьные данные переменной длины (не-Unicode). Максимальная длина 8000 символов. СУБД Firebird способна хранить до 32765 символов.

т.е. максимальная длина varchar unicode будет 8191?
...
Рейтинг: 0 / 0
10.10.2017, 15:46:18
    #39534144
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Юникод в базе без конвертации в приложении
makhaonавторVARCHAR(8192)

потому что максимальный размер VARCHAR в ansi не 32768

да, ошибочка :)
32764
...
Рейтинг: 0 / 0
10.10.2017, 16:29:05
    #39534207
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Юникод в базе без конвертации в приложении
"Подчистил" длинные строки.
Скрипт выполнился успешно.
Буду проверять.
Всем спасибо за подсказки.
...
Рейтинг: 0 / 0
11.10.2017, 10:07:44
    #39534450
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Юникод в базе без конвертации в приложении
IBExpert теперь при открытии таблицы выводит ошибку:

block size exceed implementation restriction


Есть какие-то ограничения на общий размер текстовых полей таблицы?
Например, если в таблице есть 2-4 поля varchar общим размером более 8191.
...
Рейтинг: 0 / 0
11.10.2017, 10:36:56
    #39534480
Док
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Юникод в базе без конвертации в приложении
Мимопроходящийбери Лазаря.
у него utf-8.
это пока что. НАсколько я в курсе, там тоже utf-16 планируется в обозримом будущем
...
Рейтинг: 0 / 0
11.10.2017, 14:23:18
    #39534712
makhaon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Юникод в базе без конвертации в приложении
Док,

У лазаря utf8 не везде. В линуксе - utf8, в винде - 1251. Собираются вроде бы на 'обычный' юникод переходить.
...
Рейтинг: 0 / 0
11.10.2017, 14:28:47
    #39534722
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Юникод в базе без конвертации в приложении
11.10.2017 14:23, makhaon пишет:
> В линуксе - utf8, в винде - 1251.

с чего вдрук?!
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
11.10.2017, 14:46:00
    #39534735
makhaon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Юникод в базе без конвертации в приложении
Мимопроходящий,

Насколько я помню, до было так.
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Юникод в базе без конвертации в приложении / 25 сообщений из 49, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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