Delphi 从UTF8数据库字段中存储的中文字符串生成RTF文本

Delphi 从UTF8数据库字段中存储的中文字符串生成RTF文本,delphi,utf-8,rtf,cjk,Delphi,Utf 8,Rtf,Cjk,在Delphi7中(由于许多原因,我无法在Xe中转换应用程序),我必须从存储到UTF8字段(Firebird 2.5表中)的中文字符串生成RTF字符串 例如,我读取包含字符串UTF8值的字段值“史蒂芬·克拉申" 字符串转换成线串,然后我应该转换成这样的字符串 'ca\'b7\'b5\'d9\'b7\'d2\f1\'b7\f0\'bf\'cb\'c0\'ad\'c9\'ea\ 上一个中文字符串的UTF8字段的值为“åèèèèèèèèèèèèèèèèè 我该怎么做 我做了很多搜索,但没有找到解决方

在Delphi7中(由于许多原因,我无法在Xe中转换应用程序),我必须从存储到UTF8字段(Firebird 2.5表中)的中文字符串生成RTF字符串

例如,我读取包含字符串UTF8值的字段值“史蒂芬·克拉申" 字符串转换成线串,然后我应该转换成这样的字符串 'ca\'b7\'b5\'d9\'b7\'d2\f1\'b7\f0\'bf\'cb\'c0\'ad\'c9\'ea\

上一个中文字符串的UTF8字段的值为“åèèèèèèèèèèèèèèèèè

我该怎么做

我做了很多搜索,但没有找到解决方案

请给我一些建议来解决这个问题


谢谢Massimo几天后,我终于从这篇文章中找到了一个解决方案 以及本网站提供的十进制转换

从字段加载UTF8值后,我使用UTF8Decode,然后转换为Rtf

var
  fUnicode : widestring;

  function UnicodeToRtf(const S: WideString): string;
   var
     I: Integer;
   begin
     Result := '';
     for I := 1 to Length(S) do
         Result := Result + '\u' + IntToStr(Word(S[I]))+'?';
   end;

begin
   fUnicode := Utf8Decode(DbChineseField.AsString);
   fRtfString := UnicodetoRtf(fUnicode);
   ..... 
end;

@DavidHeffernan-谢谢,但无论如何,我无法将python代码翻译成delphi;这不是关于代码,而是关于如何在RTF中编码Unicode。你做得不对。你应该编码UTF16值。抱歉,但我什么也没做;我只是想知道如何使用de将UTF8字符串字段的内容翻译成RTF字符串感谢您需要做的是使用那篇文章中描述的UTF-16 RTF编码。您会注意到它与您在问题中使用的RTF编码不同。