Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.04.07;
Скачать: CL | DM;

Вниз

китайские символы   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.57 MB
Время: 0.007 c
15-1354530589
alexdn
2012-12-03 14:29
2013.04.07
Виндовс 8


2-1348317559
Mikishanya
2012-09-22 16:39
2013.04.07
браузер


15-1355318378
Дмитрий С
2012-12-12 17:19
2013.04.07
Вызов функции с неизвестными параметрами.


15-1355171457
Юрий
2012-12-11 00:30
2013.04.07
С днем рождения ! 11 декабря 2012 вторник


15-1355344202
Юрий
2012-12-13 00:30
2013.04.07
С днем рождения ! 13 декабря 2012 четверг