powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Кириллица в XML...
12 сообщений из 12, страница 1 из 1
Кириллица в XML...
    #34430732
Emu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Emu
Гость
Здравствуйте


Как в документ xml из Delphi вставить текст с русскими символами?

Знаю, что можно использовать такой вариант:
Код: plaintext
1.
2.
3.
4.
...
 ValueNode: IXMLNode;
...
 ValueNode := NewStock.AddChild('name');
 ValueNode.Text := 'Иванов';   


Тогда текст с кириллицей как-то преобразуется, и документ можно открыть в explorer'е. Но мне такой вариант не подходит, и я делаю подругому.
-----------------------------

Использую компонент XMLDocument в Delphi.
Загружаю в него документ xml:

Код: plaintext
XMLDocument1.LoadFromFile('C:\123.xml');

В этот документ подставляются значения тегов (на заранее подготовленные места):

Код: plaintext
1.
2.
XMLDocument1.XML.Text := StringReplace( XMLDocument1.XML.Text, '{metka_1}',
                                        'Иванов',
                                        [rfIgnoreCase] );

документ сохраняется:

Код: plaintext
XMLDocument1.XML.SaveToFile ('C:\321.xml');


Если таким образом, в документ XML подставляется текст с латинскими символами, то документ XML нормально можно открыть в explorer. Если текст подставляется с кириллицей (как в случае выше), то документ не открывается.
...
Рейтинг: 0 / 0
Кириллица в XML...
    #34430744
TiG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Доктор, вы бы кодировку то пофиксили" (c)

Код: plaintext
<?xml version="1.0" encoding="Windows-1251"?>
...
Рейтинг: 0 / 0
Кириллица в XML...
    #34430836
Emu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Emu
Гость
Спасибо, работает...

А по другому можно как-нибудь, чтобы в начале не указывать кодировки?


Дело в том. что у меня есть жёстко заданый по стандарту SCORM 1.2 XML документ:

Код: plaintext
1.
<?xml version="1.0"?>
...

и в нём не желательно задавать кодировку (и вообще как-то отклоняться от стандарта)...

В нём строка с русскими символами представляется, например, так:

Код: plaintext
<title>Проверка теста</title> 

если открыть документ через блокнот - отображается как выше.
Если открыть через explorer, то отображается правильно с кириллицей.
...
Рейтинг: 0 / 0
Кириллица в XML...
    #34430966
TiG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ключевое слово - unicode
AFAIR, как раз UTF-8 используется в качестве кодировки по умолчанию
...
Рейтинг: 0 / 0
Кириллица в XML...
    #34430969
TiG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вообще задание кодировки в заголовке xml-я странно как то считать отклонением от стандарта :-)
...
Рейтинг: 0 / 0
Кириллица в XML...
    #34431041
Emu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Emu
Гость
Тогда вопрос сводится к следующему -

как в Delphi строку 'проверка теста' превратить в 'Проверка теста'? ---------------------------

Можно создать новый тег с именем NAME, и в качестве его текста задать нужный текст:

...
ValueNode: IXMLNode;
...
ValueNode := NewStock.AddChild('NAME');
ValueNode.Text := 'проверка теста' ;

После сохранения в документ XML, текст преобразуется в 'Проверка теста' автоматически.

НО мне такой вариант не подходит...
...
Рейтинг: 0 / 0
Кириллица в XML...
    #34431115
SuSa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
После сохранения в документ XML, текст преобразуется в 'Проверка теста' автоматически.
НО мне такой вариант не подходит...
Почему ЭТО происходит? - не задумывался, наверно кодировка (по умолчанию в delphi) для сохранения текстовых файлов и кодировка по умолчанию в xml (=UTF-8) разные. тебе так не кажется
А что в последних версиях Delphi уже нельзя настроить свои проекты? наверняка ведь можно поменять не только шрифт, цвет, размер сохраняемого текста но и кодировку
...
Рейтинг: 0 / 0
Кириллица в XML...
    #34431266
Emu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Emu
Гость
авторнаверно кодировка (по умолчанию в delphi) для сохранения текстовых файлов и кодировка по умолчанию в xml (=UTF-8) разные.

Если бы кодировка менялась после сохранения документа, тогда можно было бы просто вставить ту же строку 'проверка теста' в документ, а потом сохранить:
Код: plaintext
XMLDocument1.XML.SaveToFile ('C:\321.xml');
(но, если так сделать, то текст 'проверка теста' после сохранения в документе не изменится на "Проверка теста" - поэтому при открытии возникнет ошибка)
----------------------------------------

Кириллица изменяется на "Проверка теста" не когда СОХРАНЯЕТСЯ документ:
Код: plaintext
XMLDocument1.XML.SaveToFile ('C:\321.xml');

а, когда вносятся новые теги, и в качестве текста между этими тегами пользователь устанавливает текст на кириллице:
Код: plaintext
1.
2.
3.
4.
...
ValueNode: IXMLNode;
...
ValueNode := NewStock.AddChild('NAME');
ValueNode.Text := 'проверка теста' ; 
------------------------------------------

Вот как-то нужно прежде чем вставлять текст, изменить его.
Скорее всего что-то типо такого:
Код: plaintext
str := Unicode('проверка теста', 'UTF-8');
...
Рейтинг: 0 / 0
Кириллица в XML...
    #34431300
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EmuДело в том. что у меня есть жёстко заданый по стандарту SCORM 1.2 XML документ:
Код: plaintext
1.
<?xml version="1.0"?>
...
в этом случае согласно стандарту XML документ находится в кодировке utf-8, так что експлорер всё отображает корректно. Ничо не понял, что тебя не устраивает и чего хочется.
...
Рейтинг: 0 / 0
Кириллица в XML...
    #34431325
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И читай доки до полного просветления на предмет TXMLDocument::Encoding и TXMLDocument::SaveToFile
...
Рейтинг: 0 / 0
Кириллица в XML...
    #34431399
Emu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Emu
Гость
Всё отлично - сделал что хотел...

Для того чтобы подставить в готовый документ текст с кириллицей, и она отображалась правильно можно воспользоваться функцией:

UTF8Encode('текст');
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Кириллица в XML...
    #38556794
Nurss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EmuВсё отлично - сделал что хотел...

Для того чтобы подставить в готовый документ текст с кириллицей, и она отображалась правильно можно воспользоваться функцией:

UTF8Encode('текст');


Emu,Добрый день!

Подскажите как можно получить текст на кирилицце в символах(иероглифах) как в вашем случае?
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Кириллица в XML...
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]