|
|
|
как писать widestring в firebird в D5?
|
|||
|---|---|---|---|
|
#18+
Всем привет, с наступающим! firebird 2, Delphi 5 создал в табличке поле: aaaa varchar(250) CHARACTER SET UNICODE_FSS и через stream+параметр записываю в него widestring. потом хочу его прочитать: bsz := IBQueryW.FieldByName('aaaa').DataSize; setlength(bu,bsz); IBQueryW.FieldByName('aaaa').GetData(bu); ws := buff2ws(@bu); а DataSize мне всегда возвращает 251. :) хотя в буфере вижу свой widestring. что я не так делаю? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2014, 01:51 |
|
||
|
как писать widestring в firebird в D5?
|
|||
|---|---|---|---|
|
#18+
ну ладно, допустим, до нуля прочитаю, остальное проигнорирую. а вот попытался искать по нему: IBQ.SQL.Add('select * from zzzz where aaaa = :xxx'); IBQ.Params.Clear; IBQ.Params.CreateParam(ftWideString,'xxx',ptInput); IBQ.Params[0].Value := mywidestring; IBQ.Prepare; IBQ.Open; получаю: exception class EIBClientError with message 'unsupported feature' как победить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2014, 03:32 |
|
||
|
как писать widestring в firebird в D5?
|
|||
|---|---|---|---|
|
#18+
UNICODE_FSS - это не widestring. Отсюда гениальная идея: нужно сконвертировать widestring в UNICODE_FSS и затем уже скармливать полученную строку TIBQuery самым обычным способом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2014, 07:55 |
|
||
|
как писать widestring в firebird в D5?
|
|||
|---|---|---|---|
|
#18+
IBExpertUNICODE_FSS - это не widestring. Отсюда гениальная идея: нужно сконвертировать widestring в UNICODE_FSS и затем уже скармливать полученную строку TIBQuery самым обычным способом. А где списать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2014, 08:23 |
|
||
|
как писать widestring в firebird в D5?
|
|||
|---|---|---|---|
|
#18+
хоть бы намек какой, во что конвертить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2014, 08:32 |
|
||
|
как писать widestring в firebird в D5?
|
|||
|---|---|---|---|
|
#18+
booratinoхоть бы намек какой, во что конвертить? В UNICODE_FSS, который есть не что иное, как ущербная версия UTF8. А поскольку в FB 2 есть нормальный UTF8, то про UNICODE_FSS нужно забыть и использовать UTF8. И, соответственно, конвертировать widestring в UTF8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2014, 09:34 |
|
||
|
как писать widestring в firebird в D5?
|
|||
|---|---|---|---|
|
#18+
booratinoсоздал в табличке поле: aaaa varchar(250) CHARACTER SET UNICODE_FSS да что ж такое... ну какой еще unicode_fss! http://www.ibase.ru/unicode_faq.htm и с Delphi 5 вам практически не светит. если только вы не ошиблись, и у вас XE5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2014, 09:48 |
|
||
|
как писать widestring в firebird в D5?
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2014, 09:48 |
|
||
|
как писать widestring в firebird в D5?
|
|||
|---|---|---|---|
|
#18+
kdvи с Delphi 5 вам практически не светит. Всё там светит и теоретически, и практически. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2014, 09:52 |
|
||
|
как писать widestring в firebird в D5?
|
|||
|---|---|---|---|
|
#18+
IBExpertВсё там светит и теоретически, и практически. только это будет весьма геморройно. прозрачно с юникодом работает Delphi 2009 и выше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2014, 10:13 |
|
||
|
как писать widestring в firebird в D5?
|
|||
|---|---|---|---|
|
#18+
Спасибо, теперь стало понятнее... но не совсем. :) И вот, что именно не понятно: Есть тип WideString, существует TFieldType равный ftWideString. Логично предположить, что ftWideString как раз для WideString. А в базе при этом что, UTF8?... не стыкуется как-то... :) или для ftWideString надо в таблице создавать поле какого-то другого типа? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2014, 12:20 |
|
||
|
как писать widestring в firebird в D5?
|
|||
|---|---|---|---|
|
#18+
booratinoсуществует TFieldType равный ftWideString. Логично предположить, что ftWideString как раз для WideString Вот только это предположение разбивается о реальность того, что ftWideString не используется ни одним набором компонент доступа к данным и у TField нет свойства, позволяющего скормить ему собственно WideString. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2014, 12:34 |
|
||
|
как писать widestring в firebird в D5?
|
|||
|---|---|---|---|
|
#18+
booratino, в базе UTF8, если в коннекте UTF8, то IBX и другие компоненты доступа должны сами преобразовывать UTF8 в строку нужного типа. Вот я смотрю в IBX от Delphi 2007, которая не юникодная. И вижу, что там в IBCustomDataSet.pas в DefaulFieldClasses элементам ftWideString, ftFixedWideChar, ftWideMemo и проч сопоставлен nil. Таким образом, с сервера такой тип столбца не получить. Если выставить его прямо в IBX, на клиенте, то получится пшик. Потому что такой тип никак не обрабатывается. В юникодных Дельфи, в IBX, для ftWideString есть соответствие, это TIBStringField (который унаследован от TWideStringField), который используется для любых строк. В общем, вы же указанный мной FAQ не прочитали, а там написано, что компоненты доступа к БД должны поддерживать юникод. И дальше все, чем вы работаете с этими данными, тоже должно поддерживать юникод (как минимум грид, поля ввода, и прочее). В до-юникодных Дельфи есть компоненты, поддерживающие юникод, но они все сторонние (типа TMS, и т.п.). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2014, 12:37 |
|
||
|
как писать widestring в firebird в D5?
|
|||
|---|---|---|---|
|
#18+
booratinoСпасибо, теперь стало понятнее... но не совсем. :) И вот, что именно не понятно: Есть тип WideString, существует TFieldType равный ftWideString. Логично предположить, что ftWideString как раз для WideString. А в базе при этом что, UTF8?... не стыкуется как-то... :) или для ftWideString надо в таблице создавать поле какого-то другого типа? Юникод в FB (UTF8) и юникод в винде (UTF16) - это две большие разницы. UTF8 прекрасно себе живет в ftString. От сервера ты получаешь строки в UTF8, конвертируешь их в widestring, затем уже с широкими строками делаешь то, что тебе нужно. И наоборот. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2014, 13:06 |
|
||
|
как писать widestring в firebird в D5?
|
|||
|---|---|---|---|
|
#18+
На компонентах, вроде, StringGrid, DBGrid и прочих, все прекрасно отрисовывается при помощи Windows.TextOutW. Редактировать можно в TRichEdit, если не полениться отпарсить rtf, чтобы получить обратно свой widestring. И в blob полях все нормально сохранется, и вынимается оттуда. Осталось научиться искать. ftWideString для какого типа данных был сделан? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2014, 13:10 |
|
||
|
как писать widestring в firebird в D5?
|
|||
|---|---|---|---|
|
#18+
IBExpert , переменной utf8 у меня нет, я могу просто конвертануть widestring в array of byte. после этого IQuery.Params.CreateParam с каким типом создавать, чтобы через LoadFromStream его залить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2014, 13:16 |
|
||
|
как писать widestring в firebird в D5?
|
|||
|---|---|---|---|
|
#18+
booratino, интересно, зачем это все надо, если в D2009 и выше работа с юникодом не требует ни доп. компонент, ни одной дополнительной строки кода? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2014, 13:17 |
|
||
|
как писать widestring в firebird в D5?
|
|||
|---|---|---|---|
|
#18+
зачем ездить на старом велосипеде, когда можно купить новый, с мотором? :) не знаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2014, 13:20 |
|
||
|
как писать widestring в firebird в D5?
|
|||
|---|---|---|---|
|
#18+
booratino IBExpert , переменной utf8 у меня нет, я могу просто конвертануть widestring в array of byte. после этого IQuery.Params.CreateParam с каким типом создавать, чтобы через LoadFromStream его залить? Ты эта... ознакомиться бы с самими кодировками - как да что. Сразу полегчает. Для utf8 не нужны переменные особых типов, utf8 прекрасно живет в ansistring. Посему AsString для работы с ней вполне достаточно. Для конвертации UTF8 в widestring нужны соответствующие функции. Их есть, например, здесь: http://www.yunqa.de/delphi/doku.php/products/tntunicodecontrols/index ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2014, 13:40 |
|
||
|
как писать widestring в firebird в D5?
|
|||
|---|---|---|---|
|
#18+
kdvbooratino, интересно, зачем это все надо, если в D2009 и выше работа с юникодом не требует ни доп. компонент, ни одной дополнительной строки кода? А чо стоит это щастье? Можно не отвечать :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2014, 13:42 |
|
||
|
как писать widestring в firebird в D5?
|
|||
|---|---|---|---|
|
#18+
IBExpertА чо стоит это щастье? Можно не отвечать минимально оно стоит $569, это если обновиться до Delphi XE7 Prof, при этом получая все предыдущие версии (кроме 2006) до 7. Просто если человек мастрячит новый проект на Д5, с юникодом, то это мазохизм, однозначно. Д5 сколько лет? Какие для нее есть компоненты с поддержкой юникода? Ну да, древние TNT, еще что-то. booratinoзачем ездить на старом велосипеде, когда можно купить новый, с мотором? :) не знаю. я не уговариваю купить. я предлагаю оценить разницу в количестве усилий для реализации одной и той же задачи. На Дельфи 5 это N, а на Delphi 2009-XE7 - ноль. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2014, 13:53 |
|
||
|
как писать widestring в firebird в D5?
|
|||
|---|---|---|---|
|
#18+
Hello, Kdv! You wrote on 29 декабря 2014 г. 14:02:22: Kdv> я предлагаю оценить разницу в количестве усилий для реализации одной и > той же задачи. На Дельфи 5 это N, а на Delphi 2009-XE7 - ноль. теоретический маркетинг. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2014, 14:03 |
|
||
|
как писать widestring в firebird в D5?
|
|||
|---|---|---|---|
|
#18+
Мимопроходящийтеоретический маркетинг. ничего теоретического не вижу. человеку надо юникод записать в базу, и считать его. Вот как он со строками обычными работал в Д5, так же прозрачно будет и в ХЕ7 работать, даже не думая, что это юникод. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2014, 14:20 |
|
||
|
как писать widestring в firebird в D5?
|
|||
|---|---|---|---|
|
#18+
Hello, Kdv! You wrote on 29 декабря 2014 г. 14:22:45: Kdv> ничего теоретического не вижу. > человеку надо юникод записать в базу, и считать его. Вот как он со > строками обычными работал в Д5, так же прозрачно будет и в ХЕ7 работать, > даже не думая, что это юникод. теоретически, ога. если он пишет задачу с нуля. и освоил нововведения всей линейки версий от D6 до ХЕ7. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2014, 14:27 |
|
||
|
как писать widestring в firebird в D5?
|
|||
|---|---|---|---|
|
#18+
В Unified Interbase заявлена поддержка delphi 5, возможно через TNT Правда, чутьё подсказывает, что в реaльности эту поддержку никто уже лет 5 не проверял. Но это не фатально, я когда писал на пятёрке поддерживал совместимость JediVCL с D5 и это вполне реально было. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2014, 14:32 |
|
||
|
как писать widestring в firebird в D5?
|
|||
|---|---|---|---|
|
#18+
kdvминимально оно стоит $569, это если обновиться до Delphi XE7 Prof Легальная Delphi 5 1999 года розлива? Бывает и такое конечно: у крупных контор, которые решили легализоваться. Какая-то, например, складская учётка на А... коробочная например. Но в настолько крупных проектах, мне кажетсЯ, вопросом закупки озаботятся более опытные лица. Кроме того, к вышеозвученной сумме надо бы ещё добавить цену апгрейда с "пятёрки" до XE2, по крайней мере судя по kdvDelphi XE7 Professional Upgrade from XE2-XE6 ESD (без Mobile Add-On Pack) 30200 руб В общем, если легально топикстартера апгрейдить - то на CodeTyphon. А если нелегально, то сам найдёт ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2014, 14:40 |
|
||
|
как писать widestring в firebird в D5?
|
|||
|---|---|---|---|
|
#18+
Мимопроходящийи освоил нововведения всей линейки версий от D6 до ХЕ7. нафига эти нововведения все осваивать? Он про IBX пишет. С IBX и штатными контролами код приложения будет один в один, что на D5, что на XE7. AriochЛегальная Delphi 5 1999 года розлива? где логика? Если у него Д5 нелегальная, то к чему тут тогда разглагольствования о стоимости, хоть Д5, хоть ХЕ7? :-) кстати, Д5 Энтерпрайз вполне много народу покупало. И до сих пор сидят на ней именно те, кто покупал. Ariochк вышеозвученной сумме надо бы ещё добавить цену апгрейда с "пятёрки" до XE2, по крайней мере судя по Выкинь эту мысль из головы, она неправильная. - XE2 - минимальная версия, с которой доступен апгрейд. С 1 января 2015 это будет XE3. - делать апгрейд до ХЕ2 невозможно, потому что "см. выше" - минимальная версия для апгрейда - ХЕ2 - до 31 декабря 2014 года была пару месяцев "амнистия" для апгрейда С ЛЮБОЙ предыдущей версии. - в здравом уме делать апгрейд на ХЕ3-XE6 невозможно. Потому что апгрейд на ХЕ7 стоит столько же. Еще и дает возможность получить все предыдущие пропущенные версии. не надо усложнять, все намного проще. Апгрейд с Д5 до ХЕ7 Проф до 31 декабря был $569, как я уже привел. Никаких "промежуточных" ходов для апгрейда нет и не было (и не будет). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2014, 18:15 |
|
||
|
как писать widestring в firebird в D5?
|
|||
|---|---|---|---|
|
#18+
IBExpert Для utf8 не нужны переменные особых типов, utf8 прекрасно живет в ansistring. Посему AsString для работы с ней вполне достаточно. ок. сегодня - завтра проверю. BOM нужен? IBExpert Для конвертации UTF8 в widestring нужны соответствующие функции. Их есть, например, здесь: спасибо. :) такие простые вещи пишутся минут за 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2014, 22:27 |
|
||
|
как писать widestring в firebird в D5?
|
|||
|---|---|---|---|
|
#18+
Млин, не верю своим глазам. неужели ищет и находит?!!..... ух, IBExpert , тебе, дорогой, особых пожеланий в новом году! :) D5 рулит! я в этом не сомневался. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.12.2014, 00:29 |
|
||
|
как писать widestring в firebird в D5?
|
|||
|---|---|---|---|
|
#18+
Не все так гладко. пишу в базу 3 буквы в utf8: 230,152,142, 227,129,139, 227,130,138 получаю обратно: 230,0,142, 227,129,139, 227,130,138 что это за магический символ 152? :) видимо, ftString, все же, не подходит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.12.2014, 01:47 |
|
||
|
как писать widestring в firebird в D5?
|
|||
|---|---|---|---|
|
#18+
а если все то же самое, и теми же средствами писать в blob, то все нормально обратно возвращается. что такое 152? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.12.2014, 02:47 |
|
||
|
как писать widestring в firebird в D5?
|
|||
|---|---|---|---|
|
#18+
booratino> что такое 152? http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1134380&msg=17052595 -- Vladimir A.Bakhvaloff Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.12.2014, 02:49 |
|
||
|
как писать widestring в firebird в D5?
|
|||
|---|---|---|---|
|
#18+
не совсем ясна эта таблица. я записываю 1 символ 明, закодированный utf8: $e6, $98, $8e. обратно он прочитывается как $e6, 0, $8e. И это точно до всяких конверторов. Записываю через TIBQuery с параметром, заполненным loadfromstream, вижу $98. Читаю TField.GetData - уже 0. Т.е. либо при записи $98 становится нулем, либо при чтении. А так, вообще, кучу текста туда заливаю - нормально. Что это может быть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.12.2014, 04:18 |
|
||
|
как писать widestring в firebird в D5?
|
|||
|---|---|---|---|
|
#18+
booratino> я записываю 1 символ, закодированный utf8: $e6, $98, $8e. обратно он прочитывается как $e6, 0, $8e. > И это точно до всяких конверторов. Записываю через TIBQuery с параметром, заполненным loadfromstream, вижу $98. Читаю TField.GetData - уже 0. Т.е. либо при записи $98 становится нулем, либо при > чтении. А так, вообще, кучу текста туда заливаю - нормально. Что это может быть? Ну так посмотри в IBExpert'е чтоль, что туда записывается для начала, потом и дальше думать будешь... -- Vladimir A.Bakhvaloff Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.12.2014, 04:20 |
|
||
|
как писать widestring в firebird в D5?
|
|||
|---|---|---|---|
|
#18+
booratinoЗаписываю через TIBQuery с параметром, заполненным loadfromstream, вижу $98. Читаю TField.GetData - уже 0. Ты извращенец что-ли? Для дельфи и TIBQuery строка utf8 ничем абсолютно не отличается от строки win1251, например. Читай и пиши строковые поля через AsString. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.12.2014, 05:32 |
|
||
|
как писать widestring в firebird в D5?
|
|||
|---|---|---|---|
|
#18+
IBExpert, у нас в legacy-коде были записи срок через stirngstream, правда это относилось к параметрам в запросах и спросить уже не у кого почему. в XE2 - и после установки типов TParam в фиксированное значение руками - это стало ненужно. Но раньбше почему-то использовалось. Хотя "на бумаге" и не должно бы быть разницы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.12.2014, 11:09 |
|
||
|
как писать widestring в firebird в D5?
|
|||
|---|---|---|---|
|
#18+
booratino, у тебя connection в какой кодировке делается? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.12.2014, 11:13 |
|
||
|
как писать widestring в firebird в D5?
|
|||
|---|---|---|---|
|
#18+
Код: sql 1. 2. 3. 4. Вот, кстати. реальный кусок, правда на dbExpress и "юникодной" дельфе (т.е. .SetAsString выставляет параметру тип ftWideString, а не ftString). Причём на FB 2.5.2 работало без выкрутасов, а вот в 2.1.x отказалось. Правда при ВЫПОЛНЕНИИ запроса, когда DBX не мог найти правильный тип для параметра. На мой взгляд, если глюк воспроихводится так легко, как запись и чтение параметра без обращения к реальному серверу (без prepare запроса например), то надо в лоб ставить Use Debug DCU и трассироваь внутренности IBX и VCL А перед этим проверить что поставленны все официальные обновления на IBX и VCL. И возможно ещё и какие-нибудь старые VCLfixPack поискать Либо же все же рискнуть UIB'ом ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.12.2014, 11:22 |
|
||
|
как писать widestring в firebird в D5?
|
|||
|---|---|---|---|
|
#18+
zirraНу так посмотри в IBExpert'е чтоль, что туда записывается для начала, потом и дальше думать будешь... да, похоже, что при записи. IBExpert показывает 1 байт в этом поле. IBExpertТы извращенец что-ли? со стажем! ладно, сделал запись просто через string, результат тот же: 230,152,142 записывается как 230,0,142. Ariochу тебя connection в какой кодировке делается? - firebird 2.1. - база создана в WIN1251. - потом добавлено 1 поле: alter table zzz add aaa varchar(250) CHARACTER SET UTF8 - подключаюсь в базе lc_ctype=WIN1251 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.12.2014, 14:29 |
|
||
|
как писать widestring в firebird в D5?
|
|||
|---|---|---|---|
|
#18+
booratino- подключаюсь в базе lc_ctype=WIN1251И что ж вы после этого хотите? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.12.2014, 14:31 |
|
||
|
как писать widestring в firebird в D5?
|
|||
|---|---|---|---|
|
#18+
booratino- подключаюсь в базе lc_ctype=WIN1251 То есть ты серверу говоришь "щаз я тебе буду пихать данные в кодировке WIN1251", а сам пихаешь ему UTF-8. Врать нехорошо и чревато боком. Что ты и поимел. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.12.2014, 15:23 |
|
||
|
как писать widestring в firebird в D5?
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovТо есть ты серверу говоришь "щаз я тебе буду пихать данные в кодировке WIN1251", а сам пихаешь ему UTF-8. Врать нехорошо и чревато боком. Что ты и поимел. а наоборот врать можно? подключиться, типа, utf8, а пихать WIN1251? у меня, ведь, все остальное в WIN1251.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.12.2014, 18:08 |
|
||
|
как писать widestring в firebird в D5?
|
|||
|---|---|---|---|
|
#18+
booratinoа наоборот врать можно? подключиться, типа, utf8, а пихать WIN1251? На таком вранье сервер тебя подловит быстрее и сразу даст по соплям. Он жосткий. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.12.2014, 19:11 |
|
||
|
как писать widestring в firebird в D5?
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovНа таком вранье сервер тебя подловит быстрее и сразу даст по соплям. Он жосткий. хорошо... а как же тогда народ делает? вот таблица, все поля 1251, одно поле utf8. как с такими данными работать одновременно? Всех с Новым годом! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.12.2014, 23:05 |
|
||
|
как писать widestring в firebird в D5?
|
|||
|---|---|---|---|
|
#18+
Так никто в своём уме не делает. Есть чарсет коннекта, и данные на сервер надо передавать именно в этом чарсете. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.12.2014, 23:21 |
|
||
|
как писать widestring в firebird в D5?
|
|||
|---|---|---|---|
|
#18+
Грустно. А зачем тогда разработчик субд предусмотрел возможность заведения в одной таблице полей с разными чарсетами? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.01.2015, 03:04 |
|
||
|
как писать widestring в firebird в D5?
|
|||
|---|---|---|---|
|
#18+
не, засада в чем-то другом. поставил firebird 2.5, пересоздал базу в utf8, конекчусь к ней в utf8. все равно 明かり превращается в 怎かり ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.01.2015, 03:42 |
|
||
|
как писать widestring в firebird в D5?
|
|||
|---|---|---|---|
|
#18+
booratinoхорошо... а как же тогда народ делает? вот таблица, все поля 1251, одно поле utf8. как с такими данными работать одновременно? Если работаешь с utf8, зачем нужны поля в 1251?? Можно понять необходимость иметь поля в разных кодировках в доюникодные времена, а сейчас зачем? booratinoпересоздал базу в utf8, конекчусь к ней в utf8. все равно 明かり превращается в 怎かり Экспертом эта строка без мутаций вставляется? Я у себя проверил - без проблем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.01.2015, 09:26 |
|
||
|
как писать widestring в firebird в D5?
|
|||
|---|---|---|---|
|
#18+
booratinoхорошо... а как же тогда народ делает? вот таблица, все поля 1251, одно поле utf8. как с такими данными работать одновременно? Кстати, с этим не должно быть никаких проблем, если коннектиться с чарсетом utf8. Можно хоть одновременно работать, хоть по очереди. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.01.2015, 09:30 |
|
||
|
как писать widestring в firebird в D5?
|
|||
|---|---|---|---|
|
#18+
IBExpertbooratinoхорошо... а как же тогда народ делает? вот таблица, все поля 1251, одно поле utf8. как с такими данными работать одновременно? Кстати, с этим не должно быть никаких проблем, если коннектиться с чарсетом utf8. Можно хоть одновременно работать, хоть по очереди. А если ещё есть поле с чарсетом octets? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.01.2015, 14:09 |
|
||
|
как писать widestring в firebird в D5?
|
|||
|---|---|---|---|
|
#18+
свои слова 03:42 беру обратно. это я по пьяни опять коннектился 1251. :) сегодня, по трезвому, с конектом utf8 сохраняется правильно. но с разными чарсетами одновременно работать не получается. красиво отдаются данные только в кодировке коннекта. придется все держать в utf8. всем спасибо за поддержку, дальше, скорее всего, справлюсь. -- с Новым Годом! Всем желаю интересных проектов и щедрых заказчивов! :)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.01.2015, 14:31 |
|
||
|
как писать widestring в firebird в D5?
|
|||
|---|---|---|---|
|
#18+
booratinoпридется все держать в utf8Это всего лишь однократно выгрузить метаданные в скрипт, автозаменой поправить чарсеты и вперед. Потом влить данные тем же ибпумп-ом, например. Да, не забыть, что длина чар-варчар не более 8к (а не 32к, как при вин1251). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.01.2015, 20:26 |
|
||
|
как писать widestring в firebird в D5?
|
|||
|---|---|---|---|
|
#18+
[quot Ivan_PisarevskyЭто всего лишь однократно выгрузить метаданные в скрипт, автозаменой поправить чарсеты и вперед. Потом влить данные тем же ибпумп-ом, например. [/quot] я так не умею. написал быстренько экспорт в txt (utf-8), и таким же образом залил обратно. :) не, ну мне, все же, не понятно. я был в полной уверенности, что TField.DataSize будет возвращать фактический размер данных, а он для ansi размером 250 возвращал 251, в для utf-8 размером 250 возвращает 1001. это так и должно быть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2015, 05:29 |
|
||
|
как писать widestring в firebird в D5?
|
|||
|---|---|---|---|
|
#18+
booratino> не, ну мне, все же, не понятно. я был в полной уверенности, что TField.DataSize будет возвращать фактический размер данных, а он для ansi размером 250 возвращал 251, в для utf-8 размером 250 > возвращает 1001. это так и должно быть? Я понимаю, что я пьян уже 72 часа, но это, млин, через всё перешагивает!!! 8-О -- Vladimir A.Bakhvaloff Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2015, 07:17 |
|
||
|
как писать widestring в firebird в D5?
|
|||
|---|---|---|---|
|
#18+
booratinoне, ну мне, все же, не понятно. я был в полной уверенности, что TField.DataSize будет возвращать фактический размер данных, а он для ansi размером 250 возвращал 251, в для utf-8 размером 250 возвращает 1001. это так и должно быть? Да, почитай в хелпе про TField.DataSize. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2015, 07:34 |
|
||
|
как писать widestring в firebird в D5?
|
|||
|---|---|---|---|
|
#18+
IBExpertпочитай в хелпе про TField.DataSize. А заодно и FAQ по ссылке на первой странице. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2015, 11:28 |
|
||
|
как писать widestring в firebird в D5?
|
|||
|---|---|---|---|
|
#18+
booratinoдля utf-8 размером 250 возвращает 1001 а вот это любопытно. 1000 или даже 1004 были бы понятны. Но 1000+1 ? http://docwiki.appmethod.com/appmethod/1.14/libraries/en/Data.DB.TField.DataSize ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2015, 12:13 |
|
||
|
как писать widestring в firebird в D5?
|
|||
|---|---|---|---|
|
#18+
Ariochа вот это любопытно. 1000 или даже 1004 были бы понятны. Но 1000+1 ? Зачем нуль-терминатору четыре байта? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2015, 14:08 |
|
||
|
как писать widestring в firebird в D5?
|
|||
|---|---|---|---|
|
#18+
IBExpert, 1) а зачем там вообще нуль-терминатор? разе он запрещён в середине строки? 2) вообще-то нуль - это codepoint, и считать его место в байтах наверное не лучшая идея. Да, конечно, "вадидно самое короткое отображение кодепойнта в байты" и все такое, но похоже на смешивание уровней абстракции ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2015, 12:41 |
|
||
|
как писать widestring в firebird в D5?
|
|||
|---|---|---|---|
|
#18+
Arioch, а в чем вопрос? DataSize показывает размер в байтах. На codepoint ему начхать. И ноль, как и первые 127 codepoint, кодируется одним байтом. В середине строки, думаю, он не запрещен, но внутри программы в случае перегона в PAnsiChar будут веселости ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2015, 17:10 |
|
||
|
как писать widestring в firebird в D5?
|
|||
|---|---|---|---|
|
#18+
Hello, Fr0st-brutal! You wrote on 13 января 2015 г. 17:12:42: Fr0st-brutal> ноль, как и первые 127 codepoint, кодируется одним байтом. В середине > строки, думаю, он не запрещен не в utf-8 Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2015, 17:14 |
|
||
|
как писать widestring в firebird в D5?
|
|||
|---|---|---|---|
|
#18+
МимопроходящийHello, Fr0st-brutal! You wrote on 13 января 2015 г. 17:12:42: Fr0st-brutal> ноль, как и первые 127 codepoint, кодируется одним байтом. В середине > строки, думаю, он не запрещен не в utf-8 Ты про ноль или что-то еще? Если про ноль, то он столь же валиден, как и в ansi строке. Т.е. никакого символа не обозначает, но вполне может попадаться в случае специфических данных (какой-нибудь строковый массив в сишной манере, например). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2015, 17:35 |
|
||
|
как писать widestring в firebird в D5?
|
|||
|---|---|---|---|
|
#18+
Fr0sT-Brutal, > На codepoint ему начхать. И ноль, как и первые 127 codepoint, кодируется одним байтом выбери одно. Если "начхать" - но каждую букву резервируются строго 4 байта. а ноль-терминатор не нужен вообще. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2015, 20:33 |
|
||
|
как писать widestring в firebird в D5?
|
|||
|---|---|---|---|
|
#18+
Fr0sT-BrutalТы про ноль или что-то еще? Если про ноль, то он столь же валиден, как и в ansi строке. В дельфевые ansistring можно, конечно, и нули пихать, но клиент FB про дельфевые ansistring ничего не знает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2015, 09:23 |
|
||
|
как писать widestring в firebird в D5?
|
|||
|---|---|---|---|
|
#18+
IBExpertFr0sT-BrutalТы про ноль или что-то еще? Если про ноль, то он столь же валиден, как и в ansi строке. В дельфевые ansistring можно, конечно, и нули пихать, но клиент FB про дельфевые ansistring ничего не знает. Хочешь сказать, что клиент где-то применяет тупые* сишные приемы обращения с 0-term string, игнорируя размер данных, который ему прислал сервер? Не верю, не может же быть все настолько плохо. *Не холиварю, но asciiz - реально самый тупой и неоптимальный способ оперирования строками ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2015, 09:47 |
|
||
|
|

start [/forum/topic.php?all=1&fid=40&tid=1563091]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
163ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
119ms |
get tp. blocked users: |
2ms |
| others: | 279ms |
| total: | 611ms |

| 0 / 0 |
