Delphi 将文件转换为UTF-8

Delphi 将文件转换为UTF-8,delphi,unicode,utf-8,subtitle,srt,Delphi,Unicode,Utf 8,Subtitle,Srt,我正在尝试制作一个程序来修复损坏的subtitle.srt文件。在做了一些研究之后,我发现一些修复这个问题的文件的网站正在将其转换为UTF-8,比如 我使用在这个链接中找到的方法:转换从.srt文件加载的文本。许多页面建议采用这种方式进行转换。但我最终没有成功。我做错了什么 这是我的转换代码: procedure Tfrm_main.btn_convertClick(Sender: TObject); var UnicodeStr: UnicodeString; UTF8Str: Raw

我正在尝试制作一个程序来修复损坏的subtitle
.srt
文件。在做了一些研究之后,我发现一些修复这个问题的文件的网站正在将其转换为UTF-8,比如

我使用在这个链接中找到的方法:转换从
.srt
文件加载的文本。许多页面建议采用这种方式进行转换。但我最终没有成功。我做错了什么

这是我的转换代码:

procedure Tfrm_main.btn_convertClick(Sender: TObject);
var
  UnicodeStr: UnicodeString;
  UTF8Str: RawByteString;
begin    
  UTF8Str := UTF8Encode(memo_source.Text);
  SetCodePage(UTF8Str, 0, False);
  UnicodeStr := UTF8Str;    
  memo_result.Text := UnicodeStr;    
end;
程序运行正常(结果很奇怪,但有点不同):

下面是我试图将
.srt
文件转换为UTF-8的程序的屏幕截图:


您确定源文件已损坏(无论这意味着什么),而不仅仅是使用CP1252而不是CP1256显示的某些ANSI文本吗?请将文件读入字节数组,并使用TEncoding将其转换为字符串。
memo_source.Lines.LoadFromFile('..',TEncoding.GetEncoding(1256))我想就是这样。@Armin-不客气!当问题没有被正确识别时,很难搜索到正确的东西,正如David已经提到过几次的那样。如果愿意,请自己回答。@Sertac的快速示例泄漏了编码实例。对于注释中的示例来说,这很好,但是您需要花一点时间来了解编码类。您确定源代码已损坏(无论这意味着什么)不仅仅是使用CP1252而不是CP1256显示一些ANSI文本?将文件读入字节数组,并使用TEncoding将其转换为字符串。
memo_source.Lines.LoadFromFile('..',TEncoding.GetEncoding(1256))我想就是这样。@Armin-不客气!当问题没有被正确识别时,很难搜索到正确的东西,正如David已经提到过几次的那样。如果愿意,请自己回答。@Sertac的快速示例泄漏了编码实例。对于注释中的示例来说,这很好,但是您需要花一点时间来了解编码类。