Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

китайские символы


Страницы:   1 2 3

ankazh ©   (2012-10-01 02:14:00) 

s := TmemoryStream.Create;
RichEdit1.lines.SaveToStream(s);
s.position:=0;
(fmDM.DSourceSlovar.DataSet.FieldByName('PrimerCl') as TBlobField).LoadFromStream(s);
s.free;

в базу вписывются китайские символы...что делать?


stas   (2012-10-01 13:06:00) [21]

sniknik ©   (01.10.12 12:38) [37]
Мы наверное не о том говорим.
s := TmemoryStream.Create;
RichEdit1.lines.SaveToStream(s);
s.position:=0;
(fmDM.DSourceSlovar.DataSet.FieldByName('PrimerCl') as TBlobField).LoadFromStream(s);
s.free;


При таком заполнении поля memo, в Access отобразятся не вопросики, а китайские символы.

Если заполнять через asString то всегда будет правильно отображаться.


sniknik   (2012-10-01 12:43:00) [22]

> Буду ковырять почему поиск в этом поле не работает.
про это тебе тоже уже говорили. не игнорируй всего, что не понятно, разбирайся, и будет долгосрочное "счастье".


sniknik   (2012-10-01 12:41:00) [23]

> Если б кто сначала подсказал....эх.
если бы кто сначала написал где и как он смотрит, вместо "записывается одна строка"... эх.


sniknik   (2012-10-01 12:38:00) [24]

> как видно из кода сохраняется тип string т.е. AnsiString
смотри не обертку, а объекты ADO раз на него ссылаешься.
оно получит тип WideSrting в любом случае, или благодаря автоприведению в дельфи/или исходным данным.

> В итоге будет 5 непонятных символов в отличии от 10 понятных.
будет 10 понятных символов всегда... при неправильной кодовой странице/... данным, от ошибки преобразование это будет 10 вопросиков. не кракозябр.


stas   (2012-10-01 12:35:00) [25]

ankazh ©   (01.10.12 12:34) [35]
)))


ankazh   (2012-10-01 12:34:00) [26]


> sniknik ©

И вправду, сделала высоту строк выше, записи все. Если б кто сначала подсказал....эх. Значит еще 4 дня назад сделала все правильно...А главное это простейшее.
Значит причина в поиске в поле МЕМО. Но как мне тогда написали, что не важно в каком поле искать.....
Буду ковырять почему поиск в этом поле не работает.


stas   (2012-10-01 12:33:00) [27]

>не шути так, типа у меня что ни одно прога "не рабочая"???...
Ну, ты так наверное не извращаешься
s := TmemoryStream.Create;
RichEdit1.lines.SaveToStream(s);
s.position:=0;
(fmDM.DSourceSlovar.DataSet.FieldByName('PrimerCl') as TBlobField).LoadFromStream(s);
s.free;


stas   (2012-10-01 12:32:00) [28]

sniknik ©   (01.10.12 12:27) [32]
Ну, хорошо разберем не примере.

Она сохраняет к примеру 10 символов в поток, как видно из кода сохраняется тип string т.е. AnsiString. В поток будет записано 10 байт. Акцесс т.к. работает с юникодом отобразит записаное содержимое потока в поле в каком виде по Вашему?
Я считаю что он отобразит 5 символов приняв то что в поле записан юникод т.к. он ниоткуда не узнает тип записанных данных. В итоге будет 5 непонятных символов в отличии от 10 понятных.


sniknik   (2012-10-01 12:27:00) [29]

> Акцесс работает с Юникодом дельфи - нет.
не шути так, типа у меня что ни одно прога "не рабочая"???...
и не путай Delphi с VCL.

> Когда сохраняешь как строку Ado видимо преобразовывает Ansi в юникод.
бред это заразно...


sniknik   (2012-10-01 12:25:00) [30]

> насколько помню, "кракозябры".
сори "абра-кадабра", а это как раз правильный rtf, еще раз ссылку на старое "обсуждение"
http://www.delphimaster.ru/cgi-bin/forum.pl?id=1348434236&n=18

правда при нем будет затруднен поиск... like перестанут работать (очевидно посмотрев на содержание), почему у тебя и выясняли нужен ли он тебе... и т.д. но ты предпочел бросить обсуждение вместо ответа на уточняющие "непонятные" вопросы... и тут же создал новое, на ту же тему (хотя тебе это тоже не понятно, похоже)


stas   (2012-10-01 12:21:00) [31]

sniknik ©   (01.10.12 12:12) [26]
Акцесс работает с Юникодом дельфи - нет. При записи потока в анси, он не перобразовывается ни чем т.к.. это поток. А акцесс считает что там записан юникод и отображает в виде юникода.
Когда сохраняешь как строку Ado видимо преобразовывает Ansi в юникод.


Anatoly Podgoretsky   (2012-10-01 12:21:00) [32]

asString это AnsiSring а RichEdit1.Text это юникод


stas   (2012-10-01 12:19:00) [33]

Не знаю в чем у Вас проблема, но я уже для интереса сделал тестовый проект, и он сохраняет все строки не только первую.
через обычную конструкцию, о которой я писал в начале.
Может быть нужно просто расширить в акцессе строку по высоте?


sniknik   (2012-10-01 12:15:00) [34]

> только не кричите
?????
уже не бред, уже параноидальные фантазии?

> rtf нужен, и я его оставила.
нет. при таком коде
fmDM.DSourceSlovar.DataSet.FieldByName('PrimerCl').asString:=RichEdit1.Text
rtf-а нет. а при том что есть для тебя, насколько помню, "кракозябры".


sniknik   (2012-10-01 12:12:00) [35]

> Так правильно, она пихает Ansi в юникодовое поле, поэтому акцесс его и показывает китайскими символами.
и ты думаешь utf8 чем-то поможет в решении "правильности пихания/понимания впихнутого"???
при том, что аксесс "заточен" на юникод, анси при правильных страницах и т.д. правильно и автоматически в него конвертируется. а правильный юникод показывается правильно везде где понимают юникод (для того и нужен) а сам аксесс он как бы мелкософтом разработан... т.е. теми кто юникод придумал(? не уверен) и продвигает.
думаешь они неправильно с ним работают?

тогда вы "два сапога - пара".


ankazh   (2012-10-01 12:08:00) [36]


> sniknik ©

только не кричите, rtf нужен, и я его оставила. Тк не знаю как разделять форматирование и текст, я сделала в базе еще дополнит столбец. Дбричедитотв за один столбец ,а вот Мемо за другой. Копирую просто текст из ДбРичЭдит в Мемо и текст Мемо записую в БД.


stas   (2012-10-01 12:06:00) [37]

sniknik ©   (01.10.12 12:03) [22]
Так правильно, она пихает Ansi в юникодовое поле, поэтому акцесс его и показывает китайскими символами.


ankazh   (2012-10-01 12:03:00) [38]

не


sniknik   (2012-10-01 12:03:00) [39]

> вместо RichEdit поставила Memo
а предлагали в самом начале, сначала решить нужен ли rtf и тут же поменять...

> Возможно надо преобразовать в UTF8
нафига? там и так юникод, если ничего специально не делать, в прошлых "апсуждениях" даже приводился отрывок хелпа по теме.


stas   (2012-10-01 11:58:00) [40]

Возможно надо преобразовать в UTF8, не помню как это делается, поищите в инете, я в примере написал, но скорее всего не правильно.
При чтении тоже надо преобразовывать обратно.

var L:TStringList;

...

L:=TStringList.Create;

s := TmemoryStream.Create;
L.Text:= AnsiToUtf8(RichEdit.Text);
L.SaveToStream (S);
L.Free;
s.position:=0;
(fmDM.DSourceSlovar.DataSet.FieldByName('PrimerCl') as TBlobField).LoadFromStream(s);
s.free;


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо