Форум: "Начинающим";
Текущий архив: 2013.04.07;
Скачать: [xml.tar.bz2];
Внизкитайские символы Найти похожие ветки
← →
ankazh © (2012-10-01 02:14) [0]s := TmemoryStream.Create;
RichEdit1.lines.SaveToStream(s);
s.position:=0;
(fmDM.DSourceSlovar.DataSet.FieldByName("PrimerCl") as TBlobField).LoadFromStream(s);
s.free;
в базу вписывются китайские символы...что делать?
← →
Германн © (2012-10-01 02:24) [1]
>в базу вписывются китайские символы...что делать?
1. Удавиться
2. Утопиться
3. Выброситься с высокого этажа
P.S. Застрелиться не предлагаю, ибо для этого нужно иметь особое хардваре. :)
← →
ankazh © (2012-10-01 02:30) [2]
> Германн ©
...а так чтоб вопрос решился без жертв? :)
← →
Германн © (2012-10-01 02:45) [3]
> ...а так чтоб вопрос решился без жертв? :)
>
Ты сначала ответь зачем ты решил\решила использовать TDBRichEdit?
Это тебе твердили много раз в прошлой ветке.
← →
ankazh © (2012-10-01 02:48) [4]ну я использую dbedit для всех полей в табл, но они имеют тип текст, а для ЭТОГО поля я выбрала тип МЕМО, тк будет писаться много текста, и текст будет форматированый, для более удобного восприятия.
← →
sniknik © (2012-10-01 08:18) [5]> использую dbedit для всех полей в табл
продолжаешь нести ахинею, причем с видом, что это ты умный, и это тебя/простых вещей не понимают, типа акцента на -
> а для ЭТОГО поля я выбрала тип МЕМО
ну явно думаешь, что тупые людишки тут не состоянии понять того, что раз RichEdit значит поле в базе мемо...
могу огорчить, есть еще OLE и оно тоже подходит для документов (объект делается связный с приложением его редактируемым)
тип varchar тоже для этой цели ничуть не хуже, если применяется к тексту с некоторыми ограничениями.
> тк будет писаться много текста, и текст будет форматированый, для более удобного восприятия.
сколько много, как форматированный, не существенно для определения нужен или нет.
> ...а так чтоб вопрос решился без жертв? :)
еще два варианта.
4. найми программиста.
5. выйди замуж за программиста. (и пусть тот факт, что женский у тебя тут наверняка только аккаунт, тебя не останавливает...)
← →
ankazh © (2012-10-01 11:00) [6]
> sniknik ©
Ваше ко мне отношение и высказывание очень неприлично и неприятно. Вы сомневаетесь в моей половой принадлежности? Если я не знаю многих вопросов связанных с Delphi, это еще не повод кого-то нанимать или за кого-то замуж выходить.
А все, что я написала выше, это лишь ответ на вопрос
> Германн © (01.10.12 02:45) [3]
и если мой ответ не столь корректно в плане программирования выражен, это не дает Вам право срывать на мне свое плохое настроение.
← →
stas © (2012-10-01 11:14) [7]ankazh © (01.10.12 02:14)
1. Какая СУБД
2. Какой тип поля PrimerCl
3. Как определили что символы в базе китайские
← →
Ega23 © (2012-10-01 11:15) [8]
> в базу вписывются китайские символы...что делать?
Подозреваю, что выставить правильный collation на поле в бд.
← →
ankazh © (2012-10-01 11:18) [9]
> 1. Какая СУБД
Access
> 2. Какой тип поля PrimerCl
поле MEMO
> 3. Как определили что символы в базе китайские
открываю файл базы, смотрю, что записалось в поле. Мне потом по этому полю нужно поиск делать, поэтому нужно, чтобы записывался "чистый" текст, без форматирования.
← →
stas © (2012-10-01 11:25) [10]>чтобы записывался "чистый" текст, без форматирования.
fmDM.DSourceSlovar.DataSet.FieldByName("PrimerCl").asString:=RichEdit1.Text
так?
← →
ankazh © (2012-10-01 11:26) [11]
> stas ©
так уже пробывала, записывает только первую строку
← →
stas © (2012-10-01 11:31) [12]Чтобы достать не форматированный текст это RichEdit1.Text, а как его записать в поле memo уже придумайте. Если так не пишеться, попробуйте через параметры, или тот же поток предварительно туда записав этот текст.
← →
ankazh © (2012-10-01 11:32) [13]через параметры тоже записывает только первую строку
← →
stas © (2012-10-01 11:38) [14]А так ?
var L:TStringList;
...
L:=TStringList.Create;
s := TmemoryStream.Create;
L.Text:=RichEdit.Text;
L.SaveToStream (S);
L.Free;
s.position:=0;
(fmDM.DSourceSlovar.DataSet.FieldByName("PrimerCl") as TBlobField).LoadFromStream(s);
s.free;
← →
ankazh © (2012-10-01 11:44) [15]
> stas © (01.10.12 11:38) [14]
те же китайские символы 敲睴敲牴൥昊祴൵甊祩&# 2573;
← →
stas © (2012-10-01 11:45) [16]А какая версия Delphi?
← →
ankazh © (2012-10-01 11:46) [17]2010
← →
ankazh © (2012-10-01 11:47) [18]в делфи текст отображается из этого поля правильно, а вот когда в базу Аксеса захожу, то там китайские символы.
← →
sniknik © (2012-10-01 11:54) [19]> Ваше ко мне отношение и высказывание очень неприлично и неприятно.
не к тебе, не путай, ты можешь быть "золотым" человеком, но твой акаунт, то "окошко" которое тебя тут представляет уважения не заслуживает.
> так уже пробывала, записывает только первую строку
> через параметры тоже записывает только первую строку
не нужно бредить... в очередной раз говоришь ахинею, бездоказательно говоришь.
stas © (01.10.12 11:38) [14]
> А так ?
да как угодно, неужели ты веришь, что МЕМО каким то чудом, и зачем то разделяет запись/поток на строки.
все только в "его голове", понимании или интерпретации увиденного.
← →
ankazh © (2012-10-01 11:57) [20]в общем взяла уже вместо RichEdit поставила Memo, все равно в базу записывается "кит.символы". Может там что-то в буфере происходит?
← →
stas © (2012-10-01 11:58) [21]Возможно надо преобразовать в 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;
← →
sniknik © (2012-10-01 12:03) [22]> вместо RichEdit поставила Memo
а предлагали в самом начале, сначала решить нужен ли rtf и тут же поменять...
> Возможно надо преобразовать в UTF8
нафига? там и так юникод, если ничего специально не делать, в прошлых "апсуждениях" даже приводился отрывок хелпа по теме.
← →
ankazh © (2012-10-01 12:03) [23]не
← →
stas © (2012-10-01 12:06) [24]sniknik © (01.10.12 12:03) [22]
Так правильно, она пихает Ansi в юникодовое поле, поэтому акцесс его и показывает китайскими символами.
← →
ankazh © (2012-10-01 12:08) [25]
> sniknik ©
только не кричите, rtf нужен, и я его оставила. Тк не знаю как разделять форматирование и текст, я сделала в базе еще дополнит столбец. Дбричедитотв за один столбец ,а вот Мемо за другой. Копирую просто текст из ДбРичЭдит в Мемо и текст Мемо записую в БД.
← →
sniknik © (2012-10-01 12:12) [26]> Так правильно, она пихает Ansi в юникодовое поле, поэтому акцесс его и показывает китайскими символами.
и ты думаешь utf8 чем-то поможет в решении "правильности пихания/понимания впихнутого"???
при том, что аксесс "заточен" на юникод, анси при правильных страницах и т.д. правильно и автоматически в него конвертируется. а правильный юникод показывается правильно везде где понимают юникод (для того и нужен) а сам аксесс он как бы мелкософтом разработан... т.е. теми кто юникод придумал(? не уверен) и продвигает.
думаешь они неправильно с ним работают?
тогда вы "два сапога - пара".
← →
sniknik © (2012-10-01 12:15) [27]> только не кричите
?????
уже не бред, уже параноидальные фантазии?
> rtf нужен, и я его оставила.
нет. при таком коде
fmDM.DSourceSlovar.DataSet.FieldByName("PrimerCl").asString:=RichEdit1.Text
rtf-а нет. а при том что есть для тебя, насколько помню, "кракозябры".
← →
stas © (2012-10-01 12:19) [28]Не знаю в чем у Вас проблема, но я уже для интереса сделал тестовый проект, и он сохраняет все строки не только первую.
через обычную конструкцию, о которой я писал в начале.
Может быть нужно просто расширить в акцессе строку по высоте?
← →
Anatoly Podgoretsky © (2012-10-01 12:21) [29]asString это AnsiSring а RichEdit1.Text это юникод
← →
stas © (2012-10-01 12:21) [30]sniknik © (01.10.12 12:12) [26]
Акцесс работает с Юникодом дельфи - нет. При записи потока в анси, он не перобразовывается ни чем т.к.. это поток. А акцесс считает что там записан юникод и отображает в виде юникода.
Когда сохраняешь как строку Ado видимо преобразовывает Ansi в юникод.
← →
sniknik © (2012-10-01 12:25) [31]> насколько помню, "кракозябры".
сори "абра-кадабра", а это как раз правильный rtf, еще раз ссылку на старое "обсуждение"
http://delphimaster.net/view/2-1348434236/
правда при нем будет затруднен поиск... like перестанут работать (очевидно посмотрев на содержание), почему у тебя и выясняли нужен ли он тебе... и т.д. но ты предпочел бросить обсуждение вместо ответа на уточняющие "непонятные" вопросы... и тут же создал новое, на ту же тему (хотя тебе это тоже не понятно, похоже)
← →
sniknik © (2012-10-01 12:27) [32]> Акцесс работает с Юникодом дельфи - нет.
не шути так, типа у меня что ни одно прога "не рабочая"???...
и не путай Delphi с VCL.
> Когда сохраняешь как строку Ado видимо преобразовывает Ansi в юникод.
бред это заразно...
← →
stas © (2012-10-01 12:32) [33]sniknik © (01.10.12 12:27) [32]
Ну, хорошо разберем не примере.
Она сохраняет к примеру 10 символов в поток, как видно из кода сохраняется тип string т.е. AnsiString. В поток будет записано 10 байт. Акцесс т.к. работает с юникодом отобразит записаное содержимое потока в поле в каком виде по Вашему?
Я считаю что он отобразит 5 символов приняв то что в поле записан юникод т.к. он ниоткуда не узнает тип записанных данных. В итоге будет 5 непонятных символов в отличии от 10 понятных.
← →
stas © (2012-10-01 12:33) [34]>не шути так, типа у меня что ни одно прога "не рабочая"???...
Ну, ты так наверное не извращаешьсяs := TmemoryStream.Create;
RichEdit1.lines.SaveToStream(s);
s.position:=0;
(fmDM.DSourceSlovar.DataSet.FieldByName("PrimerCl") as TBlobField).LoadFromStream(s);
s.free;
← →
ankazh © (2012-10-01 12:34) [35]
> sniknik ©
И вправду, сделала высоту строк выше, записи все. Если б кто сначала подсказал....эх. Значит еще 4 дня назад сделала все правильно...А главное это простейшее.
Значит причина в поиске в поле МЕМО. Но как мне тогда написали, что не важно в каком поле искать.....
Буду ковырять почему поиск в этом поле не работает.
← →
stas © (2012-10-01 12:35) [36]ankazh © (01.10.12 12:34) [35]
)))
← →
sniknik © (2012-10-01 12:38) [37]> как видно из кода сохраняется тип string т.е. AnsiString
смотри не обертку, а объекты ADO раз на него ссылаешься.
оно получит тип WideSrting в любом случае, или благодаря автоприведению в дельфи/или исходным данным.
> В итоге будет 5 непонятных символов в отличии от 10 понятных.
будет 10 понятных символов всегда... при неправильной кодовой странице/... данным, от ошибки преобразование это будет 10 вопросиков. не кракозябр.
← →
sniknik © (2012-10-01 12:41) [38]> Если б кто сначала подсказал....эх.
если бы кто сначала написал где и как он смотрит, вместо "записывается одна строка"... эх.
← →
sniknik © (2012-10-01 12:43) [39]> Буду ковырять почему поиск в этом поле не работает.
про это тебе тоже уже говорили. не игнорируй всего, что не понятно, разбирайся, и будет долгосрочное "счастье".
← →
stas © (2012-10-01 13:06) [40]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 то всегда будет правильно отображаться.
Страницы: 1 2 вся ветка
Форум: "Начинающим";
Текущий архив: 2013.04.07;
Скачать: [xml.tar.bz2];
Память: 0.59 MB
Время: 0.003 c