Size: a a a

2020 January 28

R

RusEm in Delphi & Lazarus
Delphi xe8
источник

RS

Renat Suleymanov in Delphi & Lazarus
Ясно. Просто в Lazarus есть модуль LConvEncoding, который содержит в себе функции методы для преборазования. BOM/без BOM и т.д. Наверное стоит поискать аналог этого модуля
источник

AS

Alexey Shumkin in Delphi & Lazarus
RusEm
Добрый вечер. Подскажите. Есть текст в памяти. Utf16- be with BOM.  Ищу варианты перкодировки в ansi. Сталкивался кто?  Пробовал  Tencoding.BigEndianUnicode  и дергать tEncoding. GetString,   но оно не удаляет BOM .   Сталкивался кто?
Как делал? Код?
источник

AS

Alexey Shumkin in Delphi & Lazarus
RusEm
Добрый вечер. Подскажите. Есть текст в памяти. Utf16- be with BOM.  Ищу варианты перкодировки в ansi. Сталкивался кто?  Пробовал  Tencoding.BigEndianUnicode  и дергать tEncoding. GetString,   но оно не удаляет BOM .   Сталкивался кто?
Ну и , конечно же: что именно ты делаешь? Для чего и зачем?
источник

R

RusEm in Delphi & Lazarus
    if PWord(P)^ = $FFFE then
     // BE
     Enc := TEncoding.BigEndianUnicode
   else
     // LE
     Enc := TEncoding.Unicode;

   Result := Enc.GetString(P);
источник

R

RusEm in Delphi & Lazarus
Alexey Shumkin
Ну и , конечно же: что именно ты делаешь? Для чего и зачем?
в памяти естьтакой кусок.  feff041704340440043004320441044204320443043904420435
источник

R

RusEm in Delphi & Lazarus
надо его преобразовать в нормально читабельный вид
источник

AS

Alexey Shumkin in Delphi & Lazarus
RusEm
в памяти естьтакой кусок.  feff041704340440043004320441044204320443043904420435
Откуда он там? И почему в Анси?
источник

R

RusEm in Delphi & Lazarus
Alexey Shumkin
Откуда он там? И почему в Анси?
В памяти он потому как я его туда загрузил.  А преобразовать в Анси, так как мне для дальнейшей работы нужен анси
источник

AS

Alexey Shumkin in Delphi & Lazarus
RusEm
В памяти он потому как я его туда загрузил.  А преобразовать в Анси, так как мне для дальнейшей работы нужен анси
Откуда загрузил? Из файла?
источник

R

RusEm in Delphi & Lazarus
Alexey Shumkin
Откуда загрузил? Из файла?
Да. Из бинарного
источник

AS

Alexey Shumkin in Delphi & Lazarus
RusEm
В памяти он потому как я его туда загрузил.  А преобразовать в Анси, так как мне для дальнейшей работы нужен анси
Уверен, что анси нужен? Без потерь ютф в Анси может не сконвертиться
источник

R

RusEm in Delphi & Lazarus
Ну пусть Юникод будет на выходе. Он же у Delphi xe вроде как кто стандарту
источник

AS

Alexey Shumkin in Delphi & Lazarus
RusEm
Да. Из бинарного
Зачем в память загружать? Ты ещё что-то с ним делаешь, кроме конвертации?
источник

R

RusEm in Delphi & Lazarus
Alexey Shumkin
Зачем в память загружать? Ты ещё что-то с ним делаешь, кроме конвертации?
Да
источник

R

RusEm in Delphi & Lazarus
Alexey Shumkin
Зачем в память загружать? Ты ещё что-то с ним делаешь, кроме конвертации?
В память загружаю так как в файле не только текст. Там много бинарных данных. Один из вариантов вот текст, который предварительно еще ищу в памяти
источник

AS

Alexey Shumkin in Delphi & Lazarus
я бы вместо предложил более прозрачный для понимания вариант
TfileStream + tstringstream
Из файлового потока пишешь свою строку в строковый поток, созданный с заданной кодировкой (см. Tstringstream.create http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/delphivclwin32/Classes_TStringStream_Create.html)
Из последнего ты получаешь строку в нужном внутреннем представлении...
источник

R

RusEm in Delphi & Lazarus
Оно при этом bom удалит?
источник

AS

Alexey Shumkin in Delphi & Lazarus
RusEm
Оно при этом bom удалит?
Для Tstringstream.datastring - должна вернуть как надо
источник

AS

Alexey Shumkin in Delphi & Lazarus
RusEm
Оно при этом bom удалит?
А вот выдержка из одного теста:

procedure TTestTWebServerControlServerNotStartedFail.SetUp;
var
 Lcp1251: TEncoding;
begin
 inherited;
 Lcp1251 := TMBCSEncoding.Create;
 try
   FServerPortExpected := TEncoding.UTF8.GetString(TEncoding.Convert(Lcp1251, TEncoding.UTF8,
     TEncoding.UTF8.GetBytes(SOME-STRING-IN-UTF8)));
 finally
   FreeAndNil(Lcp1251);
 end;
end;
источник