powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / как писать widestring в firebird в D5?
16 сообщений из 66, страница 3 из 3
как писать widestring в firebird в D5?
    #38847434
booratino
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
свои слова 03:42 беру обратно. это я по пьяни опять коннектился 1251. :) сегодня, по трезвому, с конектом utf8 сохраняется правильно.

но с разными чарсетами одновременно работать не получается. красиво отдаются данные только в кодировке коннекта. придется все держать в utf8.

всем спасибо за поддержку, дальше, скорее всего, справлюсь.

--

с Новым Годом! Всем желаю интересных проектов и щедрых заказчивов! :))
...
Рейтинг: 0 / 0
как писать widestring в firebird в D5?
    #38847514
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
booratinoпридется все держать в utf8Это всего лишь однократно выгрузить метаданные в скрипт, автозаменой поправить чарсеты и вперед. Потом влить данные тем же ибпумп-ом, например. Да, не забыть, что длина чар-варчар не более 8к (а не 32к, как при вин1251).
...
Рейтинг: 0 / 0
как писать widestring в firebird в D5?
    #38847715
booratino
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[quot Ivan_PisarevskyЭто всего лишь однократно выгрузить метаданные в скрипт, автозаменой поправить чарсеты и вперед. Потом влить данные тем же ибпумп-ом, например. [/quot]

я так не умею. написал быстренько экспорт в txt (utf-8), и таким же образом залил обратно. :)

не, ну мне, все же, не понятно. я был в полной уверенности, что TField.DataSize будет возвращать фактический размер данных, а он для ansi размером 250 возвращал 251, в для utf-8 размером 250 возвращает 1001. это так и должно быть?
...
Рейтинг: 0 / 0
как писать widestring в firebird в D5?
    #38847721
Фотография zirra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
booratino> не, ну мне, все же, не понятно. я был в полной уверенности, что TField.DataSize будет возвращать фактический размер данных, а он для ansi размером 250 возвращал 251, в для utf-8 размером 250
> возвращает 1001. это так и должно быть?
Я понимаю, что я пьян уже 72 часа, но это, млин, через всё перешагивает!!! 8-О

--
Vladimir A.Bakhvaloff
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
как писать widestring в firebird в D5?
    #38847722
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
booratinoне, ну мне, все же, не понятно. я был в полной уверенности, что TField.DataSize будет возвращать фактический размер данных,
а он для ansi размером 250 возвращал 251, в для utf-8 размером 250 возвращает 1001. это так и должно быть?

Да, почитай в хелпе про TField.DataSize.
...
Рейтинг: 0 / 0
как писать widestring в firebird в D5?
    #38847738
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IBExpertпочитай в хелпе про TField.DataSize.
А заодно и FAQ по ссылке на первой странице.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
как писать widestring в firebird в D5?
    #38852108
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
booratinoдля utf-8 размером 250 возвращает 1001

а вот это любопытно. 1000 или даже 1004 были бы понятны. Но 1000+1 ?

http://docwiki.appmethod.com/appmethod/1.14/libraries/en/Data.DB.TField.DataSize
...
Рейтинг: 0 / 0
как писать widestring в firebird в D5?
    #38852242
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ariochа вот это любопытно. 1000 или даже 1004 были бы понятны. Но 1000+1 ?


Зачем нуль-терминатору четыре байта?
...
Рейтинг: 0 / 0
как писать widestring в firebird в D5?
    #38853009
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IBExpert,

1) а зачем там вообще нуль-терминатор? разе он запрещён в середине строки?
2) вообще-то нуль - это codepoint, и считать его место в байтах наверное не лучшая идея. Да, конечно, "вадидно самое короткое отображение кодепойнта в байты" и все такое, но похоже на смешивание уровней абстракции
...
Рейтинг: 0 / 0
как писать widestring в firebird в D5?
    #38853414
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Arioch, а в чем вопрос? DataSize показывает размер в байтах. На codepoint ему начхать. И ноль, как и первые 127 codepoint, кодируется одним байтом. В середине строки, думаю, он не запрещен, но внутри программы в случае перегона в PAnsiChar будут веселости
...
Рейтинг: 0 / 0
как писать widestring в firebird в D5?
    #38853418
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Fr0st-brutal!
You wrote on 13 января 2015 г. 17:12:42:

Fr0st-brutal> ноль, как и первые 127 codepoint, кодируется одним байтом. В середине
> строки, думаю, он не запрещен не в utf-8
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
как писать widestring в firebird в D5?
    #38853448
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
МимопроходящийHello, Fr0st-brutal!
You wrote on 13 января 2015 г. 17:12:42:

Fr0st-brutal> ноль, как и первые 127 codepoint, кодируется одним байтом. В середине
> строки, думаю, он не запрещен не в utf-8

Ты про ноль или что-то еще? Если про ноль, то он столь же валиден, как и в ansi строке. Т.е. никакого символа не обозначает, но вполне может попадаться в случае специфических данных (какой-нибудь строковый массив в сишной манере, например).
...
Рейтинг: 0 / 0
как писать widestring в firebird в D5?
    #38853625
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fr0sT-Brutal,

> На codepoint ему начхать. И ноль, как и первые 127 codepoint, кодируется одним байтом
выбери одно. Если "начхать" - но каждую букву резервируются строго 4 байта.

а ноль-терминатор не нужен вообще.
...
Рейтинг: 0 / 0
как писать widestring в firebird в D5?
    #38853795
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fr0sT-BrutalТы про ноль или что-то еще? Если про ноль, то он столь же валиден, как и в ansi строке.

В дельфевые ansistring можно, конечно, и нули пихать, но клиент FB про дельфевые ansistring ничего не знает.
...
Рейтинг: 0 / 0
как писать widestring в firebird в D5?
    #38853814
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IBExpertFr0sT-BrutalТы про ноль или что-то еще? Если про ноль, то он столь же валиден, как и в ansi строке.

В дельфевые ansistring можно, конечно, и нули пихать, но клиент FB про дельфевые ansistring ничего не знает.
Хочешь сказать, что клиент где-то применяет тупые* сишные приемы обращения с 0-term string, игнорируя размер данных, который ему прислал сервер? Не верю, не может же быть все настолько плохо.

*Не холиварю, но asciiz - реально самый тупой и неоптимальный способ оперирования строками
...
Рейтинг: 0 / 0
как писать widestring в firebird в D5?
    #38853912
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IBExpertклиент FB про дельфевые ansistring ничего не знает.
Он и про null-terminated не в курсе, поскольку тупо оперирует блоками байт с известной длиной.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
16 сообщений из 66, страница 3 из 3
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / как писать widestring в firebird в D5?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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