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


Как в документ 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
02.04.2007, 11:41
    #34430744
TiG
TiG
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кириллица в XML...
"Доктор, вы бы кодировку то пофиксили" (c)

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

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


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

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

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

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

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

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

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

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

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

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

НО мне такой вариант не подходит...
...
Рейтинг: 0 / 0
02.04.2007, 13:26
    #34431115
SuSa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кириллица в XML...
После сохранения в документ XML, текст преобразуется в 'Проверка теста' автоматически.
НО мне такой вариант не подходит...
Почему ЭТО происходит? - не задумывался, наверно кодировка (по умолчанию в delphi) для сохранения текстовых файлов и кодировка по умолчанию в xml (=UTF-8) разные. тебе так не кажется
А что в последних версиях Delphi уже нельзя настроить свои проекты? наверняка ведь можно поменять не только шрифт, цвет, размер сохраняемого текста но и кодировку
...
Рейтинг: 0 / 0
02.04.2007, 14:02
    #34431266
Emu
Emu
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кириллица в XML...
авторнаверно кодировка (по умолчанию в 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
02.04.2007, 14:11
    #34431300
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кириллица в XML...
EmuДело в том. что у меня есть жёстко заданый по стандарту SCORM 1.2 XML документ:
Код: plaintext
1.
<?xml version="1.0"?>
...
в этом случае согласно стандарту XML документ находится в кодировке utf-8, так что експлорер всё отображает корректно. Ничо не понял, что тебя не устраивает и чего хочется.
...
Рейтинг: 0 / 0
02.04.2007, 14:17
    #34431325
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кириллица в XML...
И читай доки до полного просветления на предмет TXMLDocument::Encoding и TXMLDocument::SaveToFile
...
Рейтинг: 0 / 0
02.04.2007, 14:40
    #34431399
Emu
Emu
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кириллица в XML...
Всё отлично - сделал что хотел...

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

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

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

UTF8Encode('текст');


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

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


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