Delphi в мире Юникода


         

TMemoryStream


В тех случаях, когда для записи текста в файл используется TMemoryStream, важной является запись Byte Order Mark (BOM) в качестве начальных данных файла. Вот пример записи BOM в файл:  var    BOM: TBytes;  begin    ...    BOM := TEncoding.UTF8.GetPreamble;    Write(BOM[0], Length(BOM)); Весь пишущий код должен быть изменен на работу в кодировке UTF8 для Юникод-строк:  var    Temp: Utf8String;  begin    ...    Temp := Utf8Encode(Str); // <-- Str - это строка, записываемая в файл    Write(Pointer(Temp)^, Length(Temp));  //Write(Pointer(Str)^, Length(Str)); <-- это оригинальный вызов Write для записи строки в файл



Содержание раздела