当前位置: 首页 > 知识库问答 >
问题:

Delphi XE7中使用TXML文档对象不能正确显示XML文件中的度数符号

陶朝明
2023-03-14

****XMLDoc.Active := True;
  XMLDoc.Options := [doNodeAutoCreate, doNodeAutoIndent];
  XMLDoc.Version := '1.0';
  XMLDoc.Encoding := 'utf-8';****

?xml version=“1.0”encoding=“UTF-8”?这是我打开XML文件时预期的结果。但是它没有在XML文件中显示encoding=“UTF-8”。因此,我认为学位符号没有正确地显示在XML文件中。(因为它不能编码)。

我将UTF-8更改为UTF-16,但当我试图打开XML文件时,它显示了错误消息,如从当前编码切换到指定的编码不受支持。我想在RAD Studio XE7中有一些编码问题,因为对于以前的版本(Delphi XE5)来说,它工作得很好。请给我一些建议。

XMLDocument1:= TXMLDocument.create(nil);
    XMLDocument1.Active := True;
    XMLDocument1.Version :='1.0';
    XMLDocument1.Encoding :='UTF-8';
        XMLDocument2:= TXMLDocument.create(nil);
    XMLDocument2.Active := True;
    XMLDocument2.Version :='1.0';
    XMLDocument2.Encoding :='UTF-8';          

  { Add new child. This will become the document element.
    If the document element already exists, then an exception is raised. }
  //LNode := XMLDocument1.AddChild('Airbus');
  LNode := XMLDocument1.CreateElement('TestElement', '101°F (38.33°C)');
  XMLDocument1.DocumentElement := LNode;

  { Display document content. }

    XMLDocument1.SaveToFile('c:\mk1.xml');
{if we take xmldocuments.xml.text method is not taking “Encoding=’UTF-8’}
    XMLDocument2.LoadFromFile ('c:\mk1.xml');
    **strsampletext:= XMLDocument2.XML.text; //Here I am not getting "Encoding='UTF-8". and the string "strsampletext" passed as a parameter**. If I write "strsampletext" into another XML file I can't view Degree Symbol correctly when I view in IE.

加载保存的XML后,编码的UTF-8将不再使用。

共有1个答案

郭云
2023-03-14

这里没有我可以复制的错误。根据您的代码考虑以下程序:

{$APPTYPE CONSOLE}

uses
  Xml.XMLIntf, Xml.XMLDoc, Winapi.ActiveX;

procedure Main;
var
  XMLDocument1, XMLDocument2: IXMLDocument;
  LNode: IXMLNode;
begin
  XMLDocument1 := TXMLDocument.Create(nil);
  XMLDocument1.Active := True;
  XMLDocument1.Version := '1.0';
  XMLDocument1.Encoding := 'UTF-8';
  XMLDocument2 := TXMLDocument.Create(nil);
  XMLDocument2.Active := True;
  XMLDocument2.Version := '1.0';
  XMLDocument2.Encoding := 'UTF-8';
  LNode := XMLDocument1.CreateElement('TestElement', '101°F (38.33°C)');
  XMLDocument1.DocumentElement := LNode;
  XMLDocument1.SaveToFile('c:\desktop\mk1.xml');
  XMLDocument2.LoadFromFile('c:\desktop\mk1.xml');
  Writeln(XMLDocument2.Encoding);
end;

begin
  CoInitialize(nil);
  Main;
  Readln;
end.

当用XE7 Update1,32位编译时,该程序的输出是:

UTF-8

保存的文件使用UTF-8编码。这是我加载文件时记事本++的截图:

Memo1.Lines.Text := XMLDocument1.XML.Text;
Memo1.Lines.SaveToFile(...);

这将失败,因为保存TStrings时的默认编码是ANSI。

 类似资料:
  • 我有一个使用UTF-8编码的XML文件,在XML声明中正确指定。 该文件包括一些标准ASCII以外的字符。特别地,它包括带元音字符的o。它已经正确地将其表示为一个2字节的UTF-8序列c0b6。但在IE或Firefix中打开时,它会显示为除法符号“÷”,即使我已经将默认字体设置为Arial Unicode。浏览器正在正确地检测到(显式指定的)UTF-8编码。 显示如下所示: 我可以上传文件,但它相

  • 模板的主页是关于我们的,它由 索引页基本上是flash容器做动画,但从其他页面加载文件,如新闻,关于我们,联系人,画廊。 首先,你们中的一些人会说,检查这些字符是否包括在flash文件中,以及字体是否支持它。因此,我打开index.fla文件,盗用这些字符,并选择字符范围内的所有字符。我通过打开photoshop并检查如果我在那里键入字符是否会正确显示,以确保字体支持特殊字符。 我还打开了inde

  • 我有一个Windows 1252 word文档,我想转换为UTF-8。我需要这样做才能正确地将doc文件转换为pdf。这是我目前的做法: 但是,当我在Word中打开转换后的文件()时,它无法正确显示某些字符。例如,Ü将变成ü。 我该怎么解决这个问题?当我创建一个新的BufferedReader(使用UTF-8编码)并读取时,这些字符在我的IDE控制台中正确显示。

  • 两种情况下生成的 XML 文件相同 知道为什么在生成文档时会有这种差异吗?我在搜索此内容时找不到任何相关内容。 如何(强制)将所有数据模型包含在模式部分中?非常感谢任何指针或资源。 谢谢你

  • Excel 2013似乎没有正确读取CSV文件(Excel 2010可以)。每次我打开. csv文件,我所有的数据都显示在第一列。 我知道我可以进入,,然后选择,但是这个设置没有保存,每次打开这种文件我都厌倦了这样做。 如何将Excel 2013一劳永逸地设置为漂亮地显示CSV文件(逗号分隔)?

  • CSV文件包含欧元的价格,比如,但是当我打开CSV文件时,Excel不会正确显示欧元符号。 我从Oracle数据库读取数据,将CSV文件内容存储在