Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
15-1355227400
O'ShinW
2012-12-11 16:03
2013.04.07
Предлагаю турнир по шахматам. Блиц.


2-1349394762
Wadimka
2012-10-05 03:52
2013.04.07
Подскажите примерчик


15-1355382381
alexdn
2012-12-13 11:06
2013.04.07
Антивирус McAfee


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


2-1349255869
cobalt
2012-10-03 13:17
2013.04.07
Incompatible types





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский