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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.08.2013, 18:16   #1
denis716
Новичок
Джуниор
 
Регистрация: 30.08.2013
Сообщений: 3
По умолчанию проблемы с кодировкой в TXMLDocument

Добрый день, уважаемые!

натолкните пожалуйста на мысль, много копал интернет но решения пока не нашел. Есть такой код, во втором мемо - кракозябры. Что делать?

Код:
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, XMLDoc;

type
  TForm2 = class(TForm)
    Memo1: TMemo;
    Button1: TButton;
    Memo2: TMemo;

    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}

procedure TForm2.Button1Click(Sender: TObject);
var textXML : widestring;
    myXML : TXMLDocument;
begin
   textXML:='<?xml version="1.0" encoding="windows-1251"?> <node1>блаблабла</node1>';
   memo1.Lines.Add(textXML); //все нормально

   myXml:=TXMLDocument.Create(nil);
   myXML.loadFromXML(textXML);
   myXML.Active:=True;
   Memo2.Lines:=myXML.XML;  //кракозябры
end;

end.
заранее спасибо!
denis716 вне форума Ответить с цитированием
Старый 30.08.2013, 18:27   #2
grominfo
Форумчанин
 
Аватар для grominfo
 
Регистрация: 30.05.2011
Сообщений: 651
По умолчанию

Код:
function MyUTF8Decode(Value : String) : String;
var
  Rs : String;
begin
  Rs := UTF8Decode(Value);
  if (Length(Value) > 0) and (Rs = '') then  //если у нас получилась пустая строка
    Rs := Value;  //значит там были русские символы НЕ в UTF8
  Result := Rs;
end; 

Memo2.text:=MyUTF8Decode(myXML.XML.text);
Создание, программирование и сопровождение сайтов любой сложности.
Изготовление программ на заказ.
Список услуг и портфолио на сайте www.andreygrom.ru
grominfo вне форума Ответить с цитированием
Старый 30.08.2013, 18:58   #3
denis716
Новичок
Джуниор
 
Регистрация: 30.08.2013
Сообщений: 3
По умолчанию

Да, спасибо, так работает.

А есть способы затолкать XML внутрь TXMLDocument так, чтобы Memo2.Lines:=myXML.XML;
и все ок?

другими словами TXMLDocument внутри все преобразует в utf8?
denis716 вне форума Ответить с цитированием
Старый 30.08.2013, 19:02   #4
grominfo
Форумчанин
 
Аватар для grominfo
 
Регистрация: 30.05.2011
Сообщений: 651
По умолчанию

Цитата:
А есть способы затолкать XML внутрь TXMLDocument так, чтобы Memo2.Lines:=myXML.XML;
и все ок?

другими словами TXMLDocument внутри все преобразует в utf8?
Ну после загрузки документа выполни

Код:
myXML.XML.text:=MyUTF8Decode(myXML.XML.text)
И продолжай дальше работать как с TStrings
Создание, программирование и сопровождение сайтов любой сложности.
Изготовление программ на заказ.
Список услуг и портфолио на сайте www.andreygrom.ru
grominfo вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблемы с кодировкой ashtone9130 C/C++ Базы данных 4 27.04.2013 12:42
Проблемы с кодировкой Александр74 Помощь студентам 1 09.06.2012 22:21
Проблемы с кодировкой Ollieportnin PHP 4 23.10.2011 20:44
Проблемы с кодировкой. Jakethefish PHP 2 14.04.2011 15:58
Проблемы с TXMLDocument ipdd Помощь студентам 0 02.12.2010 21:32