Создать текст RTF из китайской строки, хранящейся в поле базы данных UTF8 - PullRequest
0 голосов
/ 06 февраля 2020

В Delphi 7 (по многим причинам я не могу преобразовать приложение в Xe) я должен сгенерировать строку RTF из китайской строки, которая хранится в поле UTF8 (в таблице Firebird 2.5).

Например, я читаю значение поля, которое содержит значение UTF8 строки «史蒂芬 · 克拉 申» в строку wiredstring, а затем я должен преобразовать в строку типа 'ca \' b7 \ 'b5 \' d9 \ 'b7 \' d2 \ f1 \ 'b7 \ f0 \' bf \ 'cb \' c0 \ 'ad \' c9 \ 'ea \

Значение поля UTF8 для предыдущей китайской строки равно' å²è'‚芬 · å… ‹æ‹ ‰ ç ”³ '

Как я могу это сделать?

Я много занимался поиском, но не нашел решений.

Пожалуйста, дайте мне несколько советов, чтобы решить эту проблему.

Спасибо, Массимо

1 Ответ

0 голосов
/ 11 февраля 2020

Через несколько дней я наконец нашел решение, вдохновленное этим постом Получение значения char в Delphi 7 и преобразование в десятичное число, доступное на этом сайте https://www.branah.com/unicode-converter

После загрузки значения 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;
...