如何恢复因 Delphi 中错误编码而损坏的文本?

问题描述

我使用 Delphi 2009。我收到一个字符串形式的文本,看起来像“Р'РёР·РіСѓРЅРsРІ (ранний) {VHS}”。使用在线解码器,我能够确定它实际上是 Win-1251 代码页。

我应该怎么做才能恢复正常,换句话说,让它重新可读?

解决方法

var s: string;
    rbs: RawByteString;
begin
    rbs := Utf8ToAnsi('Визгунов (ранний) {VHS}');
    SetCodePage(rbs,1251,false);
    s := string(rbs); // s = 'Визгунов (ранний) {VHS}'
end;