可以在 Delphi 6 中将 XML 转换为 UTF-8 编码吗?
目前这就是我正在做的事情:
- 用 AnsiString 填充 TXMLDocument
- 最后通过使用将数据转换为 UTF-8
WideStringVariable = AnsiToUtf8(Doc.XML.Text);
WideStringVariable
在文件开头使用TFileStream
和添加将值保存到文件中BOM for UTF8
。
代码:
Procedure SaveAsUTF8( const Name:String; Data: TStrings );
const
cUTF8 = $BFBBEF;
var
W_TXT: WideString;
fs: TFileStream;
wBOM: Integer;
begin
if TRIM(Data.Text) <> '' then begin
W_TXT:= AnsiToUTF8(Data.Text);
fs:= Tfilestream.create( Name, fmCreate );
try
wBOM := cUTF8;
fs.WriteBUffer( wBOM, sizeof(wBOM)-1);
fs.WriteBuffer( W_TXT[1], Length(W_TXT)*Sizeof( W_TXT[1] ));
finally
fs.free
end;
end;
end;
如果我在 Notepad++ 或其他检测编码的编辑器中打开文件,它会显示带有 BOM 的 UTF-8。但是,它似乎没有正确编码文本。
出了什么问题,我该如何解决?
更新:XML 属性:
XMLDoc.Version := '1.0';
XMLDoc.Encoding := 'UTF-8';
XMLDoc.StandAlone := 'yes';