我们正在尝试将Delphi环境从Delphi2007迁移到Delphi XE2。我们从Sourceforge下载了最新的Turbopower合作伙伴。net开发工具。当我们做一个简单的测试来加载一个xml文件时,我们得到一个错误“无效的XML字符找到”我们的代码行。
var
testxml : UnicodeString; // a normal String in Xe2
FModel: TXpObjModel;
begin
FModel := TXpObjModel.Create(nil); //Step 1
FModel.LoadMemory(testxml[1], Length(testxml)); //Step2
end. 当变量"Textxml“类型更改为ansiString时,代码将在步骤2中失败,然后正确加载该xml。
XML编码为UTF-8。
像这样的东西
<?xml version="1.0" encoding="UTF-8"> 那么,谁能建议我们如何加载存储在Unicode字符串变量类型中的xml数据呢?
发布于 2012-01-06 16:19:24
可以尝试将unicode字符串转换回UTF8,如下所示:
var
textxml: UnicodeString;
textutf: UTF8String;
FModel: TXpObjModel;
begin
textutf := Utf8Encode(textxml);
FModel := TXpObjModel.Create(nil); //Step 1
FModel.LoadMemory(textutf[1], ByteLength(textutf)); //Step2
end;另外,您应该使用ByteLength()函数,因为内存中字符串的实际大小是Length*SizeOf(CharType)。
https://stackoverflow.com/questions/8757665
复制相似问题