Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.07.2011, 14:22   #1
Жолдас
Новичок
Джуниор
 
Регистрация: 27.07.2011
Сообщений: 9
Радость кодировка xml

привет всем! пожалуиста помогите написал программу каторая создает тхт файл внутри код хмл на коде не показывают казахские буквы
Жолдас вне форума Ответить с цитированием
Старый 27.07.2011, 14:40   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

у вас еще и xml небось содержит заголовок, типа он в UTF8(как и большинство XML)

лучше всего XML писать в UTF8 кодировке.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 27.07.2011, 15:58   #3
Жолдас
Новичок
Джуниор
 
Регистрация: 27.07.2011
Сообщений: 9
По умолчанию

таки написал но когда вызываешь апликацию буквы ирогифом видны
Жолдас вне форума Ответить с цитированием
Старый 27.07.2011, 16:01   #4
Жолдас
Новичок
Джуниор
 
Регистрация: 27.07.2011
Сообщений: 9
По умолчанию

вот отрезок програмного кода

procedure TForm2.NewXMLFail2;
var
f: Textfile;
begin
AssignFile(f, PrPath+'Out\Old\'+ApplNumberNext(Pr Path+'IN\ApplNumber.txt')); {Assigns the Filename}
ReWrite(f); {Create a new file named ek.txt}
Writeln(f, '<?xml version="1.0" encoding="utf-8"?>');
Writeln(f, '<ApplicationFile>');
Writeln(f, ' <FileHeader>');
Writeln(f, ' <FormatVersion>2.0</FormatVersion>');
Writeln(f, ' <Sender>000100</Sender>');
Writeln(f, ' <CreationDate>'+FormatDateTime('yyy y-mm-dd', Date)+'</CreationDate>');
Writeln(f, ' <CreationTime>'+timetostr(Time)+' </CreationTime>');
Writeln(f, ' <Number>'+inttostr(Number)+'</Number>');
Writeln(f, ' <Institution>0001</Institution>');
Writeln(f, ' </FileHeader>');
Writeln(f, ' <ApplicationsList>');
Writeln(f, ' <Application>');

Writeln(f, ' <RegNumber>'+RegNumberNext(PrPath+' IN\RegNumber.txt')+'</RegNumber>');
Writeln(f, ' <OrderDprt>'+Dprt+'</OrderDprt>');
Writeln(f, ' <ObjectType>Contract</ObjectType>');
Writeln(f, ' <ActionType>Add</ActionType>');
Writeln(f, ' <ProductGroup>ISSPRIV</ProductGroup>');
Writeln(f, ' <ObjectFor>');
Writeln(f, ' <ClientIDT>');
Writeln(f, ' <ClientInfo>');
Writeln(f, ' <ClientNumber>'+ClientNumber+'</ClientNumber>');
if MiddleName = '' then
Writeln(f, ' <ShortName>'+FirstName+' '+LastName[1]+'..</ShortName>')
else
Writeln(f, ' <ShortName>'+FirstName+' '+LastName[1]+'.'+MiddleName[1]+'.</ShortName>');
Writeln(f, ' </ClientInfo>');
Writeln(f, ' </ClientIDT>');
Writeln(f, ' </ObjectFor>');
Writeln(f, ' <Data>');
Writeln(f, ' <Contract>');
Writeln(f, ' <Institution>0001</Institution>');
Writeln(f, ' <InstitutionIDType>Bank</InstitutionIDType>');
Writeln(f, ' <ClientType>APR_</ClientType>');
Writeln(f, ' <ServiceGroup>'+ServiceGroup+'</ServiceGroup>');
Writeln(f, ' <Product>');
Writeln(f, ' <ProductCode1>'+Product+'</ProductCode1>');
Writeln(f, ' </Product>');
Writeln(f, ' </Contract>');
Writeln(f, ' </Data>');
Writeln(f, ' <SubApplList>');
Writeln(f, ' <Application>');
Writeln(f, ' <RegNumber>'+RegNumberNext(PrPath+' IN\RegNumber.txt')+'</RegNumber>');
Writeln(f, ' <OrderDprt>'+Dprt+'</OrderDprt>');
Writeln(f, ' <ObjectType>Contract</ObjectType>');
Writeln(f, ' <ActionType>Add</ActionType>');
Writeln(f, ' <ProductGroup>ISSPRIV</ProductGroup>');
Writeln(f, ' <Data>');
Writeln(f, ' <Contract>');
Writeln(f, ' <Institution>0001</Institution>');
Writeln(f, ' <InstitutionIDType>Bank</InstitutionIDType>');
Writeln(f, ' <ClientType>APR_</ClientType>');
Writeln(f, ' <ServiceGroup>'+ServiceGroup+'</ServiceGroup>');
Writeln(f, ' <Product>');
Writeln(f, ' <ProductCode1>'+ProductCard+'</ProductCode1>');
Writeln(f, ' </Product>');
Writeln(f, ' <PlasticInfo>');
Writeln(f, ' <FirstName>'+TRFirstName+'</FirstName>');
Writeln(f, ' <LastName>'+TRLastName+'</LastName>');
Writeln(f, ' </PlasticInfo>');
Writeln(f, ' </Contract>');
Writeln(f, ' </Data>');
Writeln(f, ' </Application>');
Writeln(f, ' </SubApplList>');
Writeln(f, ' </Application>');
Writeln(f, ' </ApplicationsList>');
Writeln(f, '</ApplicationFile>');
Closefile(f); {Closes file F}
end;
Жолдас вне форума Ответить с цитированием
Старый 27.07.2011, 16:02   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

какую апликацию?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 27.07.2011, 16:07   #6
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Он имеет в виду вот это </Application>
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 27.07.2011, 16:13   #7
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

Код:
Writeln(f, '<?xml version="1.0" encoding="utf-8"?>');
так этого мало, по-моему, надо ещё BOM вначале притулить.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."

Последний раз редактировалось veniside; 27.07.2011 в 16:15.
veniside вне форума Ответить с цитированием
Старый 27.07.2011, 16:28   #8
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Код:
так этого мало, по-моему, надо ещё BOM вначале притулить.
дело не в BOM.

а в том, что где вы пишите в UTF8?
у вас xml прописан как UTF8, а сами пишите или в windows-1251, или в UTF16, в зависимости от версии Делфи.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 27.07.2011, 16:33   #9
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

а, ну всякие Product, FirstName и LastName должны быть в UTF-8, это понятно )

> а сами пишите или в windows-1251, или в UTF16

так может они уже в UTF8 (или в AnsiString/UTF8 под 2009/2010/XE), из приведенного куска кода это не очевидно.

(хотя, судя по "timetostr(Time)", о реальной кодировке записываемых данных никто и не задумывался )
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."

Последний раз редактировалось veniside; 27.07.2011 в 16:36.
veniside вне форума Ответить с цитированием
Старый 27.07.2011, 16:36   #10
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
так может они уже в UTF8 (или в AnsiString/UTF8 под 2009/2010/XE), из приведенного куска кода это не очевидно.
учитывая что это и есть код, то тут UTF8 и не пахнет.
Цитата:
а, ну всякие Product, FirstName и LastName должны быть в UTF-8, это понятно )
ASCII не нужно переводить, но вот любое начиная с кода 128, нуждается.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Кодировка в с++ Alt_Shift Помощь студентам 0 16.04.2011 08:48
сформировать xml-файл на основе другого xml-файла NieL Общие вопросы Delphi 2 21.12.2010 15:49
Кодировка 0479 Общие вопросы по Java, Java SE, Kotlin 1 02.11.2010 03:04
парсер XML, не видит XML тэги supercelt PHP 3 02.11.2009 19:18
Кодировка psp Общие вопросы Delphi 7 01.04.2008 19:18