Neuroware
@Neuroware
Программист в свободное от работы время

Как перекодировать string из Windows 1251 в UCS-2 (алгоритм)?

Есть некий программный продукт с прослойкой бизнес кода на неком языке с весьма гибким синтаксисом, выглядит похожим на pascal, при этом спокойно кушает паскалевский синтаксис рядом с java и плюсовым, видимо его делали так чтобы "любой мог написать". Нужно изменить кодировку текста, но так чтобы результат как был в string так в нем и остался, есть ли какой ни будь алгоритм, который можно было бы взять за основу?
p.s. никаких специфичных для того или иного языка функций в этом "полуязыке" нет, хотя некоторые аналоги с паскалеподобным синтаксисом присутствуют.
Нужно измененить кодировку строки из windows 1251 в UCS-2 или UTF-16
Перекодировать нужно чтобы отправлять провайдеру smpp, он кириллицу кушает только в UCS-2 или UTF-16.
Пример кода, который кушает эта среда, фрагмент кода рабочий и нормально компилируется несмотря на различие синтаксиса.
except
	  sResult := '';
        end;
        sSource := ReplaceStr(sSource, '%h' + IntToStr(k),sResult);
      end;
    end;
  finally
    if (lFldHndl <> nil) then FreeObject(lFldHndl);
    if (lFldName <> nil) then FreeObject(lFldName);
    if (oDL <> nil) then FreeObject(oDL);
  end;
  if bTransliteSMS then
    Result = TranslateRus2Lat(sSource)
  else Result := sSource;

Надеюсь на вашу помощь.
  • Вопрос задан
  • 1085 просмотров
Пригласить эксперта
Ответы на вопрос 2
@Sumor
В Delphi есть специальный тип - WideString, который соответствует указателю на строку UTF-16.
Для перевода используется функция StringToWideChar.
Есть ещё WinApi функция MultiByteToWideChar.
Ответ написан
@RZaripov
Delphi программист
есть также класс TEncoding, правда есть ли эта поддержка в этом продукте
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы